
package server;



import client.*;
import client.inventory.Equip;
import client.inventory.Item;
import client.inventory.MapleInventory;
import client.inventory.MapleInventoryType;
import client.skills.Skill;
import client.skills.SkillFactory;
import client.status.MonsterStatus;
import client.status.MonsterStatusEffect;
import configs.ServerConfig;
import constants.*;
import handling.channel.ChannelServer;
import handling.opcode.EffectOpcode;
import handling.world.party.MaplePartyCharacter;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import server.life.MapleMonster;
import server.maps.*;
import server.skill.MapleForeignBuffSkill;
import server.skill.MapleForeignBuffStat;
import tools.*;
import tools.packet.BuffPacket;
import tools.packet.EffectPacket;
import tools.packet.SummonPacket;

import java.awt.*;
import java.io.Serializable;
import java.lang.ref.WeakReference;
import java.util.*;
import java.util.List;
import java.util.concurrent.ScheduledFuture;




































 public class MapleStatEffect implements Serializable {
    /*   40 */
    public void setInfo(Map<MapleStatInfo, Integer> info) {
        this.info = info;
    }

    public void setTraits(Map<MapleTraitType, Integer> traits) {
        this.traits = traits;
    }

    public void setOverTime(boolean overTime) {
        this.overTime = overTime;
    }

    public void setSkill(boolean skill) {
        this.skill = skill;
    }

    public void setPartyBuff(boolean partyBuff) {
        this.partyBuff = partyBuff;
    }

    public void setNotRemoved(boolean notRemoved) {
        this.notRemoved = notRemoved;
    }

    public void setRepeatEffect(boolean repeatEffect) {
        this.repeatEffect = repeatEffect;
    }

    public void setRefreshstyle(boolean refreshstyle) {
        this.refreshstyle = refreshstyle;
    }

    public void setForeign(MapleForeignBuffSkill foreign) {
        this.foreign = foreign;
    }

    public void setStatups(EnumMap<MapleBuffStat, Integer> statups) {
        this.statups = statups;
    }

    public void setAvailableMap(List<Pair<Integer, Integer>> availableMap) {
        this.availableMap = availableMap;
    }

    public void setMonsterStatus(EnumMap<MonsterStatus, Integer> monsterStatus) {
        this.monsterStatus = monsterStatus;
    }

    public void setLevel(byte level) {
        this.level = level;
    }

    public void setCureDebuffs(List<MapleDisease> cureDebuffs) {
        this.cureDebuffs = cureDebuffs;
    }

    public void setPetsCanConsume(List<Integer> petsCanConsume) {
        this.petsCanConsume = petsCanConsume;
    }

    public void setFamiliars(List<Integer> familiars) {
        this.familiars = familiars;
    }

    public void setRandomPickup(List<Integer> randomPickup) {
        this.randomPickup = randomPickup;
    }

    public void setRewardItem(List<Triple<Integer, Integer, Integer>> rewardItem) {
        this.rewardItem = rewardItem;
    }

    public void setSlotCount(byte slotCount) {
        this.slotCount = slotCount;
    }

    public void setSlotPerLine(byte slotPerLine) {
        this.slotPerLine = slotPerLine;
    }

    public void setExpR(byte expR) {
        this.expR = expR;
    }

    public void setRecipeUseCount(byte recipeUseCount) {
        this.recipeUseCount = recipeUseCount;
    }

    public void setRecipeValidDay(byte recipeValidDay) {
        this.recipeValidDay = recipeValidDay;
    }

    public void setReqSkillLevel(byte reqSkillLevel) {
        this.reqSkillLevel = reqSkillLevel;
    }

    public void setEffectedOnAlly(byte effectedOnAlly) {
        this.effectedOnAlly = effectedOnAlly;
    }

    public void setEffectedOnEnemy(byte effectedOnEnemy) {
        this.effectedOnEnemy = effectedOnEnemy;
    }

    public void setType(byte type) {
        this.type = type;
    }

    public void setPreventslip(byte preventslip) {
        this.preventslip = preventslip;
    }

    public void setImmortal(byte immortal) {
        this.immortal = immortal;
    }

    public void setBs(byte bs) {
        this.bs = bs;
    }

    public void setIgnoreMob(short ignoreMob) {
        this.ignoreMob = ignoreMob;
    }

    public void setMesoR(short mesoR) {
        this.mesoR = mesoR;
    }

    public void setThaw(short thaw) {
        this.thaw = thaw;
    }

    public void setLifeId(short lifeId) {
        this.lifeId = lifeId;
    }

    public void setImhp(short imhp) {
        this.imhp = imhp;
    }

    public void setImmp(short immp) {
        this.immp = immp;
    }

    public void setInflation(short inflation) {
        this.inflation = inflation;
    }

    public void setUseLevel(short useLevel) {
        this.useLevel = useLevel;
    }

    public void setIndiePdd(short indiePdd) {
        this.indiePdd = indiePdd;
    }

    public void setIndieMdd(short indieMdd) {
        this.indieMdd = indieMdd;
    }

    public void setMobSkill(short mobSkill) {
        this.mobSkill = mobSkill;
    }

    public void setMobSkillLevel(short mobSkillLevel) {
        this.mobSkillLevel = mobSkillLevel;
    }

    public void setHpR(double hpR) {
        this.hpR = hpR;
    }

    public void setMpR(double mpR) {
        this.mpR = mpR;
    }

    public void setSourceid(int sourceid) {
        this.sourceid = sourceid;
    }

    public void setRecipe(int recipe) {
        this.recipe = recipe;
    }

    public void setMoveTo(int moveTo) {
        this.moveTo = moveTo;
    }

    public void setMoneyCon(int moneyCon) {
        this.moneyCon = moneyCon;
    }

    public void setMorphId(int morphId) {
        this.morphId = morphId;
    }

    public void setExpinc(int expinc) {
        this.expinc = expinc;
    }

    public void setExp(int exp) {
        this.exp = exp;
    }

    public void setConsumeOnPickup(int consumeOnPickup) {
        this.consumeOnPickup = consumeOnPickup;
    }

    public void setCharColor(int charColor) {
        this.charColor = charColor;
    }

    public void setInterval(int interval) {
        this.interval = interval;
    }

    public void setRewardMeso(int rewardMeso) {
        this.rewardMeso = rewardMeso;
    }

    public void setTotalprob(int totalprob) {
        this.totalprob = totalprob;
    }

    public void setCosmetic(int cosmetic) {
        this.cosmetic = cosmetic;
    }

    public void setExpBuff(int expBuff) {
        this.expBuff = expBuff;
    }

    public void setItemup(int itemup) {
        this.itemup = itemup;
    }

    public void setMesoup(int mesoup) {
        this.mesoup = mesoup;
    }

    public void setCashup(int cashup) {
        this.cashup = cashup;
    }

    public void setBerserk(int berserk) {
        this.berserk = berserk;
    }

    public void setIllusion(int illusion) {
        this.illusion = illusion;
    }

    public void setBooster(int booster) {
        this.booster = booster;
    }

    public void setBerserk2(int berserk2) {
        this.berserk2 = berserk2;
    }

    public void setRuleOn(boolean ruleOn) {
        this.ruleOn = ruleOn;
    }

    public void setBxi(boolean bxi) {
        this.bxi = bxi;
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof MapleStatEffect)) {
            return false;
        } else {
            MapleStatEffect other = (MapleStatEffect) o;
            if (!other.canEqual(this)) {
                return false;
            } else {
                label391:
                {
                    Object this$info = this.getInfo();
                    Object other$info = other.getInfo();
                    if (this$info == null) {
                        if (other$info == null) {
                            break label391;
                        }
                    } else if (this$info.equals(other$info)) {
                        break label391;
                    }

                    return false;
                }

                Object this$traits = this.getTraits();
                Object other$traits = other.getTraits();
                if (this$traits == null) {
                    if (other$traits != null) {
                        return false;
                    }
                } else if (!this$traits.equals(other$traits)) {
                    return false;
                }

                if (this.isOverTime() != other.isOverTime()) {
                    return false;
                } else if (this.isSkill() != other.isSkill()) {
                    return false;
                } else if (this.isPartyBuff() != other.isPartyBuff()) {
                    return false;
                } else if (this.isNotRemoved() != other.isNotRemoved()) {
                    return false;
                } else if (this.isRepeatEffect() != other.isRepeatEffect()) {
                    return false;
                } else if (this.isRefreshstyle() != other.isRefreshstyle()) {
                    return false;
                } else {
                    Object this$foreign = this.getForeign();
                    Object other$foreign = other.getForeign();
                    if (this$foreign == null) {
                        if (other$foreign != null) {
                            return false;
                        }
                    } else if (!this$foreign.equals(other$foreign)) {
                        return false;
                    }

                    label361:
                    {
                        Object this$statups = this.getStatups();
                        Object other$statups = other.getStatups();
                        if (this$statups == null) {
                            if (other$statups == null) {
                                break label361;
                            }
                        } else if (this$statups.equals(other$statups)) {
                            break label361;
                        }

                        return false;
                    }

                    Object this$availableMap = this.getAvailableMap();
                    Object other$availableMap = other.getAvailableMap();
                    if (this$availableMap == null) {
                        if (other$availableMap != null) {
                            return false;
                        }
                    } else if (!this$availableMap.equals(other$availableMap)) {
                        return false;
                    }

                    Object this$monsterStatus = this.getMonsterStatus();
                    Object other$monsterStatus = other.getMonsterStatus();
                    if (this$monsterStatus == null) {
                        if (other$monsterStatus != null) {
                            return false;
                        }
                    } else if (!this$monsterStatus.equals(other$monsterStatus)) {
                        return false;
                    }

                    Object this$lt = this.getLt();
                    Object other$lt = other.getLt();
                    if (this$lt == null) {
                        if (other$lt != null) {
                            return false;
                        }
                    } else if (!this$lt.equals(other$lt)) {
                        return false;
                    }

                    label333:
                    {
                        Object this$rb = this.getRb();
                        Object other$rb = other.getRb();
                        if (this$rb == null) {
                            if (other$rb == null) {
                                break label333;
                            }
                        } else if (this$rb.equals(other$rb)) {
                            break label333;
                        }

                        return false;
                    }

                    if (this.getLevel() != other.getLevel()) {
                        return false;
                    } else {
                        Object this$cureDebuffs = this.getCureDebuffs();
                        Object other$cureDebuffs = other.getCureDebuffs();
                        if (this$cureDebuffs == null) {
                            if (other$cureDebuffs != null) {
                                return false;
                            }
                        } else if (!this$cureDebuffs.equals(other$cureDebuffs)) {
                            return false;
                        }

                        Object this$petsCanConsume = this.getPetsCanConsume();
                        Object other$petsCanConsume = other.getPetsCanConsume();
                        if (this$petsCanConsume == null) {
                            if (other$petsCanConsume != null) {
                                return false;
                            }
                        } else if (!this$petsCanConsume.equals(other$petsCanConsume)) {
                            return false;
                        }

                        label311:
                        {
                            Object this$familiars = this.getFamiliars();
                            Object other$familiars = other.getFamiliars();
                            if (this$familiars == null) {
                                if (other$familiars == null) {
                                    break label311;
                                }
                            } else if (this$familiars.equals(other$familiars)) {
                                break label311;
                            }

                            return false;
                        }

                        Object this$randomPickup = this.getRandomPickup();
                        Object other$randomPickup = other.getRandomPickup();
                        if (this$randomPickup == null) {
                            if (other$randomPickup != null) {
                                return false;
                            }
                        } else if (!this$randomPickup.equals(other$randomPickup)) {
                            return false;
                        }

                        Object this$rewardItem = this.getRewardItem();
                        Object other$rewardItem = other.getRewardItem();
                        if (this$rewardItem == null) {
                            if (other$rewardItem != null) {
                                return false;
                            }
                        } else if (!this$rewardItem.equals(other$rewardItem)) {
                            return false;
                        }

                        if (this.getSlotCount() != other.getSlotCount()) {
                            return false;
                        } else if (this.getSlotPerLine() != other.getSlotPerLine()) {
                            return false;
                        } else if (this.getExpR() != other.getExpR()) {
                            return false;
                        } else if (this.getRecipeUseCount() != other.getRecipeUseCount()) {
                            return false;
                        } else if (this.getRecipeValidDay() != other.getRecipeValidDay()) {
                            return false;
                        } else if (this.getReqSkillLevel() != other.getReqSkillLevel()) {
                            return false;
                        } else if (this.getEffectedOnAlly() != other.getEffectedOnAlly()) {
                            return false;
                        } else if (this.getEffectedOnEnemy() != other.getEffectedOnEnemy()) {
                            return false;
                        } else if (this.getType() != other.getType()) {
                            return false;
                        } else if (this.getPreventslip() != other.getPreventslip()) {
                            return false;
                        } else if (this.getImmortal() != other.getImmortal()) {
                            return false;
                        } else if (this.getBs() != other.getBs()) {
                            return false;
                        } else if (this.getIgnoreMob() != other.getIgnoreMob()) {
                            return false;
                        } else if (this.getMesoR() != other.getMesoR()) {
                            return false;
                        } else if (this.getThaw() != other.getThaw()) {
                            return false;
                        } else if (this.getLifeID() != other.getLifeID()) {
                            return false;
                        } else if (this.getImhp() != other.getImhp()) {
                            return false;
                        } else if (this.getImmp() != other.getImmp()) {
                            return false;
                        } else if (this.getInflation() != other.getInflation()) {
                            return false;
                        } else if (this.getUseLevel() != other.getUseLevel()) {
                            return false;
                        } else if (this.getIndiePdd() != other.getIndiePdd()) {
                            return false;
                        } else if (this.getIndieMdd() != other.getIndieMdd()) {
                            return false;
                        } else if (this.getMobSkill() != other.getMobSkill()) {
                            return false;
                        } else if (this.getMobSkillLevel() != other.getMobSkillLevel()) {
                            return false;
                        } else if (Double.compare(this.getHpR(), other.getHpR()) != 0) {
                            return false;
                        } else if (Double.compare(this.getMpR(), other.getMpR()) != 0) {
                            return false;
                        } else if (this.getSourceid() != other.getSourceid()) {
                            return false;
                        } else if (this.getRecipe() != other.getRecipe()) {
                            return false;
                        } else if (this.getMoveTo() != other.getMoveTo()) {
                            return false;
                        } else if (this.getMoneyCon() != other.getMoneyCon()) {
                            return false;
                        } else if (this.getMorphId() != other.getMorphId()) {
                            return false;
                        } else if (this.getExpinc() != other.getExpinc()) {
                            return false;
                        } else if (this.getEXP() != other.getEXP()) {
                            return false;
                        } else if (this.getConsumeOnPickup() != other.getConsumeOnPickup()) {
                            return false;
                        } else if (this.getCharColor() != other.getCharColor()) {
                            return false;
                        } else if (this.getInterval() != other.getInterval()) {
                            return false;
                        } else if (this.getRewardMeso() != other.getRewardMeso()) {
                            return false;
                        } else if (this.getTotalprob() != other.getTotalprob()) {
                            return false;
                        } else if (this.getCosmetic() != other.getCosmetic()) {
                            return false;
                        } else if (this.getExpBuff() != other.getExpBuff()) {
                            return false;
                        } else if (this.getItemup() != other.getItemup()) {
                            return false;
                        } else if (this.getMesoup() != other.getMesoup()) {
                            return false;
                        } else if (this.getCashup() != other.getCashup()) {
                            return false;
                        } else if (this.getBerserk() != other.getBerserk()) {
                            return false;
                        } else if (this.getIllusion() != other.getIllusion()) {
                            return false;
                        } else if (this.getBooster() != other.getBooster()) {
                            return false;
                        } else if (this.getBerserk2() != other.getBerserk2()) {
                            return false;
                        } else if (this.isRuleOn() != other.isRuleOn()) {
                            return false;
                        } else if (this.isBxi() != other.isBxi()) {
                            return false;
                        } else {
                            return true;
                        }
                    }
                }
            }
        }
    }


    protected boolean canEqual(Object other) {
        return other instanceof MapleStatEffect;
    }

    public int hashCode() {
        int PRIME = 59;
        int result = 1;
        Object $info = this.getInfo();
        result = result * 59 + ($info == null ? 43 : $info.hashCode());
        Object $traits = this.getTraits();
        result = result * 59 + ($traits == null ? 43 : $traits.hashCode());
        result = result * 59 + (this.isOverTime() ? 79 : 97);
        result = result * 59 + (this.isSkill() ? 79 : 97);
        result = result * 59 + (this.isPartyBuff() ? 79 : 97);
        result = result * 59 + (this.isNotRemoved() ? 79 : 97);
        result = result * 59 + (this.isRepeatEffect() ? 79 : 97);
        result = result * 59 + (this.isRefreshstyle() ? 79 : 97);
        Object $foreign = this.getForeign();
        result = result * 59 + ($foreign == null ? 43 : $foreign.hashCode());
        Object $statups = this.getStatups();
        result = result * 59 + ($statups == null ? 43 : $statups.hashCode());
        Object $availableMap = this.getAvailableMap();
        result = result * 59 + ($availableMap == null ? 43 : $availableMap.hashCode());
        Object $monsterStatus = this.getMonsterStatus();
        result = result * 59 + ($monsterStatus == null ? 43 : $monsterStatus.hashCode());
        Object $lt = this.getLt();
        result = result * 59 + ($lt == null ? 43 : $lt.hashCode());
        Object $rb = this.getRb();
        result = result * 59 + ($rb == null ? 43 : $rb.hashCode());
        result = result * 59 + this.getLevel();
        Object $cureDebuffs = this.getCureDebuffs();
        result = result * 59 + ($cureDebuffs == null ? 43 : $cureDebuffs.hashCode());
        Object $petsCanConsume = this.getPetsCanConsume();
        result = result * 59 + ($petsCanConsume == null ? 43 : $petsCanConsume.hashCode());
        Object $familiars = this.getFamiliars();
        result = result * 59 + ($familiars == null ? 43 : $familiars.hashCode());
        Object $randomPickup = this.getRandomPickup();
        result = result * 59 + ($randomPickup == null ? 43 : $randomPickup.hashCode());
        Object $rewardItem = this.getRewardItem();
        result = result * 59 + ($rewardItem == null ? 43 : $rewardItem.hashCode());
        result = result * 59 + this.getSlotCount();
        result = result * 59 + this.getSlotPerLine();
        result = result * 59 + this.getExpR();
        result = result * 59 + this.getRecipeUseCount();
        result = result * 59 + this.getRecipeValidDay();
        result = result * 59 + this.getReqSkillLevel();
        result = result * 59 + this.getEffectedOnAlly();
        result = result * 59 + this.getEffectedOnEnemy();
        result = result * 59 + this.getType();
        result = result * 59 + this.getPreventslip();
        result = result * 59 + this.getImmortal();
        result = result * 59 + this.getBs();
        result = result * 59 + this.getIgnoreMob();
        result = result * 59 + this.getMesoR();
        result = result * 59 + this.getThaw();
        result = result * 59 + this.getLifeID();
        result = result * 59 + this.getImhp();
        result = result * 59 + this.getImmp();
        result = result * 59 + this.getInflation();
        result = result * 59 + this.getUseLevel();
        result = result * 59 + this.getIndiePdd();
        result = result * 59 + this.getIndieMdd();
        result = result * 59 + this.getMobSkill();
        result = result * 59 + this.getMobSkillLevel();
        long $hpR = Double.doubleToLongBits(this.getHpR());
        result = result * 59 + (int) ($hpR >>> 32 ^ $hpR);
        long $mpR = Double.doubleToLongBits(this.getMpR());
        result = result * 59 + (int) ($mpR >>> 32 ^ $mpR);
        result = result * 59 + this.getSourceid();
        result = result * 59 + this.getRecipe();
        result = result * 59 + this.getMoveTo();
        result = result * 59 + this.getMoneyCon();
        result = result * 59 + this.getMorphId();
        result = result * 59 + this.getExpinc();
        result = result * 59 + this.getEXP();
        result = result * 59 + this.getConsumeOnPickup();
        result = result * 59 + this.getCharColor();
        result = result * 59 + this.getInterval();
        result = result * 59 + this.getRewardMeso();
        result = result * 59 + this.getTotalprob();
        result = result * 59 + this.getCosmetic();
        result = result * 59 + this.getExpBuff();
        result = result * 59 + this.getItemup();
        result = result * 59 + this.getMesoup();
        result = result * 59 + this.getCashup();
        result = result * 59 + this.getBerserk();
        result = result * 59 + this.getIllusion();
        result = result * 59 + this.getBooster();
        result = result * 59 + this.getBerserk2();
        result = result * 59 + (this.isRuleOn() ? 79 : 97);
        result = result * 59 + (this.isBxi() ? 79 : 97);
        return result;
    }


    public String toString() {
        return "MapleStatEffect(info=" + getInfo() + ", traits=" + getTraits() + ", overTime=" + isOverTime() + ", skill=" + isSkill() + ", partyBuff=" + isPartyBuff() + ", notRemoved=" + isNotRemoved() + ", repeatEffect=" + isRepeatEffect() + ", refreshstyle=" + isRefreshstyle() + ", foreign=" + getForeign() + ", statups=" + getStatups() + ", availableMap=" + getAvailableMap() + ", monsterStatus=" + getMonsterStatus() + ", lt=" + getLt() + ", rb=" + getRb() + ", level=" + getLevel() + ", cureDebuffs=" + getCureDebuffs() + ", petsCanConsume=" + getPetsCanConsume() + ", familiars=" + getFamiliars() + ", randomPickup=" + getRandomPickup() + ", rewardItem=" + getRewardItem() + ", slotCount=" + getSlotCount() + ", slotPerLine=" + getSlotPerLine() + ", expR=" + getExpR() + ", recipeUseCount=" + getRecipeUseCount() + ", recipeValidDay=" + getRecipeValidDay() + ", reqSkillLevel=" + getReqSkillLevel() + ", effectedOnAlly=" + getEffectedOnAlly() + ", effectedOnEnemy=" + getEffectedOnEnemy() + ", type=" + getType() + ", preventslip=" + getPreventslip() + ", immortal=" + getImmortal() + ", bs=" + getBs() + ", ignoreMob=" + getIgnoreMob() + ", mesoR=" + getMesoR() + ", thaw=" + getThaw() + ", lifeId=" + getLifeID() + ", imhp=" + getImhp() + ", immp=" + getImmp() + ", inflation=" + getInflation() + ", useLevel=" + getUseLevel() + ", indiePdd=" + getIndiePdd() + ", indieMdd=" + getIndieMdd() + ", mobSkill=" + getMobSkill() + ", mobSkillLevel=" + getMobSkillLevel() + ", hpR=" + getHpR() + ", mpR=" + getMpR() + ", sourceid=" + getSourceid() + ", recipe=" + getRecipe() + ", moveTo=" + getMoveTo() + ", moneyCon=" + getMoneyCon() + ", morphId=" + getMorphId() + ", expinc=" + getExpinc() + ", exp=" + getEXP() + ", consumeOnPickup=" + getConsumeOnPickup() + ", charColor=" + getCharColor() + ", interval=" + getInterval() + ", rewardMeso=" + getRewardMeso() + ", totalprob=" + getTotalprob() + ", cosmetic=" + getCosmetic() + ", expBuff=" + getExpBuff() + ", itemup=" + getItemup() + ", mesoup=" + getMesoup() + ", cashup=" + getCashup() + ", berserk=" + getBerserk() + ", illusion=" + getIllusion() + ", booster=" + getBooster() + ", berserk2=" + getBerserk2() + ", ruleOn=" + isRuleOn() + ", bxi=" + isBxi() + ")";
    }

    /*   41 */    private static final Logger log = LogManager.getLogger(MapleStatEffect.class);
    private static final long serialVersionUID = 9179541993413738569L;
    private Map<MapleStatInfo, Integer> info;
    private Map<MapleTraitType, Integer> traits;
       private boolean overTime;
       private boolean skill;


    /*   45 */
    public Map<MapleStatInfo, Integer> getInfo() {
        return this.info;
    }

    public Map<MapleTraitType, Integer> getTraits() {
        /*   46 */
        return this.traits;

    }

       private boolean partyBuff = true;
    private boolean notRemoved;
    private boolean repeatEffect;
    private boolean refreshstyle = false;
    private MapleForeignBuffSkill foreign;
    private EnumMap<MapleBuffStat, Integer> statups;
    private List<Pair<Integer, Integer>> availableMap;
    private EnumMap<MonsterStatus, Integer> monsterStatus;
    private Point lt;
    private Point rb;
    private byte level;
    private List<MapleDisease> cureDebuffs;
    private List<Integer> petsCanConsume;
    private List<Integer> familiars;
    private List<Integer> randomPickup;
    private List<Triple<Integer, Integer, Integer>> rewardItem;
    private byte slotCount;
    private byte slotPerLine;
    private byte expR;
    private byte recipeUseCount;
    private byte recipeValidDay;
    private byte reqSkillLevel;
    private byte effectedOnAlly;



    public MapleForeignBuffSkill getForeign() {
        /*   51 */
        return this.foreign;

    }

    private byte effectedOnEnemy;
    private byte type;
    private byte preventslip;
    private byte immortal;
    private byte bs;
    private short ignoreMob;
    private short mesoR;
    private short thaw;
    private short lifeId;
    private short imhp;
    private short immp;
    private short inflation;
    private short useLevel;
    private short indiePdd;
    private short indieMdd;
    private short mobSkill;
    private short mobSkillLevel;
    private double hpR;
    private double mpR;
    private int sourceid;
    private int recipe;
    private int moveTo;
    private int moneyCon;

    public List<Pair<Integer, Integer>> getAvailableMap() {
        /*   53 */
        return this.availableMap;
    }

    /*   54 */
    public EnumMap<MonsterStatus, Integer> getMonsterStatus() {
        return this.monsterStatus;
    }

    /*   55 */
    public Point getLt() {
        return this.lt;
    }

    public Point getRb() {
        return this.rb;
    }



    /*   58 */
    public List<MapleDisease> getCureDebuffs() {
        return this.cureDebuffs;
    }

    /*   59 */
    public List<Integer> getFamiliars() {
        return this.familiars;
    }

    public List<Integer> getRandomPickup() {
        return this.randomPickup;
    }

    public List<Triple<Integer, Integer, Integer>> getRewardItem() {
        /*   60 */
        return this.rewardItem;

    }

    /*   62 */
    public byte getExpR() {
        return this.expR;
    }

    public byte getRecipeUseCount() {
        return this.recipeUseCount;
    }

    public byte getRecipeValidDay() {
        return this.recipeValidDay;
    }

    public byte getReqSkillLevel() {
        return this.reqSkillLevel;
    }

    public byte getEffectedOnAlly() {
        return this.effectedOnAlly;
    }

    public byte getEffectedOnEnemy() {
        return this.effectedOnEnemy;
    }

    public byte getPreventslip() {
        return this.preventslip;
    }

    public byte getImmortal() {
        return this.immortal;
    }

    public byte getBs() {
        return this.bs;
    }

    /*   63 */
    public short getMesoR() {
        return this.mesoR;
    }

    public short getThaw() {
        return this.thaw;
    }

    public short getImhp() {
        return this.imhp;
    }

    public short getImmp() {
        return this.immp;
    }

    public short getMobSkill() {
        return this.mobSkill;
    }

    public short getMobSkillLevel() {
        return this.mobSkillLevel;
    }


    /*   65 */   private int morphId = 0;
    private int expinc;
    private int exp;
    private int consumeOnPickup;
    private int charColor;
    private int interval;
    private int rewardMeso;
    private int totalprob;
    private int cosmetic;
    private int expBuff;
    private int itemup;
    private int mesoup;
    private int cashup;
    private int berserk;
    private int illusion;
    private int booster;
    private int berserk2;
    private boolean ruleOn;

    public int getRecipe() {
        return this.recipe;
    }

    public int getMoveTo() {
        return this.moveTo;
    }

    public int getMorphId() {
        return this.morphId;
    }

    public int getExpinc() {
        return this.expinc;
    }

    public int getConsumeOnPickup() {
        return this.consumeOnPickup;
    }

    public int getRewardMeso() {
        return this.rewardMeso;
    }

    public int getTotalprob() {
        return this.totalprob;
    }

    public int getCosmetic() {
        return this.cosmetic;
    }

    /*   66 */
    public int getExpBuff() {
        return this.expBuff;
    }

    public int getItemup() {
        return this.itemup;
    }

    public int getMesoup() {
        return this.mesoup;
    }

    public int getCashup() {
        return this.cashup;
    }

    public int getIllusion() {
        return this.illusion;
    }

    public int getBooster() {
        return this.booster;
    }

    public int getBerserk2() {
        return this.berserk2;
    }

    /*   67 */
    public boolean isRuleOn() {
        return this.ruleOn;
    }

    private boolean bxi = false;

    public boolean isBxi() {
        /*   68 */
        return this.bxi;

    }








    public static void apply祈祷众生(MapleCharacter player) {
        /*   77 */
        int skillLevel = player.getSkillLevel(2300009);
        /*   78 */
        if (skillLevel > 0) {

            /*   80 */
            int n3 = 1;
            /*   81 */
            if (player.getParty() != null)
                /*   82 */ n3 = player.getParty().getPartyBuffs(player.getId());

            Skill skill;
            /*   84 */
            if ((skill = SkillFactory.getSkill(2300009)) == null) {

                return;

            }
            /*   87 */
            MapleStatEffect effect = player.inPVP() ? skill.getPVPEffect(skillLevel) : skill.getEffect(skillLevel);
            /*   88 */
            int n4 = effect.getX();
            /*   89 */
            skillLevel = player.getSkillLevel(2320013);
            /*   90 */
            if (skillLevel > 0 && (skill = SkillFactory.getSkill(2320013)) != null) {
                /*   91 */
                MapleStatEffect effect1 = player.inPVP() ? skill.getPVPEffect(skillLevel) : skill.getEffect(skillLevel);
                /*   92 */
                n4 = effect1.getX();

            }
            /*   94 */
            effect.getStatups().clear();
            /*   95 */
            effect.getStatups().put(MapleBuffStat.祈祷众生, Integer.valueOf(n4 * n3));
            /*   96 */
            if (player.isAdmin() && ServerConstants.isShowPacket()) {
                /*   97 */
                player.dropSpouseMessage(10, "发送主教特性增益技能, 增益基础：" + n4 + " 人数：" + n3 + " 总增益：" + (n4 * n3));

            }

        }

    }











    public void applyPassive(MapleCharacter applyto, MapleMapObject obj) {
        /*  111 */
        if (makeChanceResult()) {

            MapleMonster mob;
            /*  113 */
            switch (this.sourceid) {

                case 2100000:

                case 2200000:

                case 2300000:
                    /*  117 */
                    if (obj == null || obj.getType() != MapleMapObjectType.MONSTER) {

                        return;

                    }

                    /*  121 */
                    mob = (MapleMonster) obj;

                    /*  123 */
                    if (!mob.getStats().isBoss()) {

                        /*  125 */
                        int absorbMp = Math.min((int) (mob.getMobMaxMp() * getX() / 100.0D), mob.getMp());

                        /*  127 */
                        if (absorbMp > 0) {

                            /*  129 */
                            mob.setMp(mob.getMp() - absorbMp);

                            /*  131 */
                            applyto.getStat().setMp(applyto.getStat().getMp() + absorbMp, applyto);

                            /*  133 */
                            applyto.getClient().announce(EffectPacket.showOwnBuffEffect(this.sourceid, 1, applyto.getLevel(), this.level));

                            /*  135 */
                            applyto.getMap().broadcastMessage(applyto, EffectPacket.showBuffeffect(applyto, this.sourceid, 1, applyto.getLevel(), this.level), false);

                        }

                    }

                    break;

            }

        }

    }









    public boolean applyTo(MapleCharacter chr) {
        /*  150 */
        return applyTo(chr, chr, true, null, getDuration(chr), false);

    }










    public boolean applyTo(MapleCharacter chr, boolean passive) {
        /*  161 */
        return applyTo(chr, chr, true, null, getDuration(chr), passive);

    }










    public boolean applyTo(MapleCharacter chr, Point pos) {
        /*  172 */
        return applyTo(chr, chr, true, pos, getDuration(chr), false);

    }











    public boolean applyTo(MapleCharacter chr, Point pos, boolean passive) {
        /*  184 */
        return applyTo(chr, chr, true, pos, getDuration(chr), passive);

    }



    public boolean applyTo(MapleCharacter chr, Point pos, int subValue) {
        /*  188 */
        return applyTo(chr, chr, true, pos, getDuration(chr), false, subValue);

    }













    public boolean applyTo(MapleCharacter applyfrom, MapleCharacter applyto, boolean primary, Point pos, int newDuration) {
        /*  202 */
        return applyTo(applyfrom, applyto, primary, pos, newDuration, false);

    }



    public boolean applyTo(MapleCharacter applyfrom, MapleCharacter applyto, boolean primary, Point pos, int newDuration, boolean passive) {
        /*  206 */
        return applyTo(applyfrom, applyto, primary, pos, newDuration, passive, 0);

    }














    public boolean applyTo(MapleCharacter applyfrom, MapleCharacter applyto, boolean primary, Point pos, int newDuration, boolean passive, int subValue) {
        /*  221 */
        if (applyfrom.isSkillCooling(this.sourceid) &&
                /*  222 */       !this.skill) {
            /*  223 */
            return false;

        }

        /*  226 */
        if (is群体治愈() && (applyfrom.getMapId() == 749040100 || applyto.getMapId() == 749040100 || applyfrom.getMap().isPvpMaps())) {
            /*  227 */
            applyfrom.getClient().announce(MaplePacketCreator.enableActions());
            /*  228 */
            return false;
            /*  229 */
        }
        if ((isSoaring_Mount() && applyfrom.getBuffedValue(MapleBuffStat.骑兽技能) == null) || (isSoaring_Normal() && !applyfrom.getMap().canSoar())) {
            /*  230 */
            applyfrom.getClient().announce(MaplePacketCreator.enableActions());
            /*  231 */
            return false;
            /*  232 */
        }
        if (this.sourceid == 4341006 && applyfrom.getBuffedValue(MapleBuffStat.影分身) == null) {
            /*  233 */
            applyfrom.getClient().announce(MaplePacketCreator.enableActions());
            /*  234 */
            return false;
            /*  235 */
        }
        if (JobConstants.is隐士(applyfrom.getJob())) {
            /*  236 */
            Skill expert = SkillFactory.getSkill(4110012);
            /*  237 */
            if (applyfrom.getTotalSkillLevel(expert) > 0) {
                /*  238 */
                MapleStatEffect eff = expert.getEffect(applyfrom.getTotalSkillLevel(expert));
                /*  239 */
                if (eff.makeChanceResult()) {
                    /*  240 */
                    applyfrom.getClient().announce(EffectPacket.showExpertEffect());

                } else {
                    /*  242 */
                    passive = false;

                }

            }
            /*  245 */
        } else if (this.sourceid == 41121052 || this.sourceid == 400011026 || this.sourceid == 400011029) {
            /*  246 */
            int point = 0;
            /*  247 */
            switch (this.sourceid) {

                case 41121052:
                    /*  249 */
                    point = 100;

                    break;

                case 400011026:
                    /*  252 */
                    point = 700;

                    break;

                case 400011029:
                    /*  255 */
                    point = -200;

                    break;

            }
            /*  258 */
            applyto.setHayatoPoint(applyto.getHayatoPoint() + point);

        }

        /*  261 */
        if (this.sourceid == 400011001) {
            /*  262 */
            if (applyto.getSummonBySkillID(400011001) != null) {
                /*  263 */
                applyto.removeSummon(400011001);

            }
            /*  265 */
            this.sourceid = 400011002;

        }
        /*  267 */
        else if (this.sourceid == 400011002) {
            /*  268 */
            if (applyto.getSummonBySkillID(400011002) != null) {
                /*  269 */
                applyto.removeSummon(400011002);

            }
            /*  271 */
            this.sourceid = 400011001;

        }


        /*  275 */
        if (primary && (
                /*  276 */       (Integer) this.info.get(MapleStatInfo.itemConNo)).intValue() != 0 && !applyto.inPVP()) {
            /*  277 */
            if (!applyto.haveItem(((Integer) this.info.get(MapleStatInfo.itemCon)).intValue(), ((Integer) this.info.get(MapleStatInfo.itemConNo)).intValue(), false, true)) {
                /*  278 */
                applyto.getClient().announce(MaplePacketCreator.enableActions());
                /*  279 */
                return false;

            }
            /*  281 */
            MapleInventoryManipulator.removeById(applyto.getClient(), ItemConstants.getInventoryType(((Integer) this.info.get(MapleStatInfo.itemCon)).intValue()), ((Integer) this.info.get(MapleStatInfo.itemCon)).intValue(), ((Integer) this.info.get(MapleStatInfo.itemConNo)).intValue(), false, true);

        }





        /*  288 */
        if (!passive) {
            /*  289 */
            int hpchange = calcHPChange(applyfrom, primary);
            /*  290 */
            int mpchange = calcMPChange(applyfrom, primary);
            /*  291 */
            PlayerStats stat = applyto.getStat();
            /*  292 */
            if (!primary && is复活术()) {
                /*  293 */
                hpchange = stat.getMaxHp();
                /*  294 */
                applyto.setStance(0);
                /*  295 */
            } else if (is负荷释放()) {





                /*  301 */
                applyto.cancelEffectFromBuffStat(MapleBuffStat.恶魔超越);
                /*  302 */
                hpchange = stat.getMaxHp() / 100 * getX();
                /*  303 */
            } else if (is额外供给() || is永动引擎()) {
                /*  304 */
                applyto.addPowerCount(is额外供给() ? ((Integer) this.info.get(MapleStatInfo.x)).intValue() : applyto.getPowerCountByJob());

            }
            /*  306 */
            List<Pair<MapleStat, Long>> hpmpupdate = new ArrayList<>(2);
            /*  307 */
            if (hpchange != 0) {

                /*  309 */
                if (hpchange < 0 && -hpchange >= stat.getHp() && !applyto.hasDisease(MapleDisease.不死化)) {
                    /*  310 */
                    applyto.getClient().announce(MaplePacketCreator.enableActions());
                    /*  311 */
                    return false;

                }
                /*  313 */
                stat.setHp(stat.getHp() + hpchange, applyto);
                /*  314 */
                hpmpupdate.add(new Pair(MapleStat.HP, Long.valueOf(stat.getHp())));

            }
            /*  316 */
            if (mpchange != 0) {
                /*  317 */
                if (JobConstants.is超能力者(applyto.getJob())) {
                    /*  318 */
                    switch (this.sourceid) {

                        case 142001000:

                        case 142001001:

                        case 142100010:

                        case 142101002:

                        case 142101009:

                        case 142110003:

                        case 142111002:

                        case 142111006:

                        case 142120000:

                        case 142120001:

                        case 142120003:

                        case 142120014:

                        case 142121004:
                            /*  332 */
                            applyto.gainPP(1);

                            break;

                        default:
                            /*  335 */
                            applyto.gainPP(mpchange);

                            break;

                    }


                } else {
                    /*  340 */
                    if (mpchange < 0 && -mpchange > stat.getMp()) {
                        /*  341 */
                        applyto.getClient().announce(MaplePacketCreator.enableActions());
                        /*  342 */
                        return false;

                    }
                    /*  344 */
                    stat.setMp(stat.getMp() + mpchange, applyto);
                    /*  345 */
                    hpmpupdate.add(new Pair(MapleStat.MP, Long.valueOf(stat.getMp())));

                }

            }
            /*  348 */
            applyto.getClient().announce(MaplePacketCreator.updatePlayerStats(hpmpupdate, true, applyto));

        }

        /*  351 */
        int powerchange = calcPowerChange(applyfrom);
        /*  352 */
        if (powerchange != 0) {
            /*  353 */
            if (powerchange < 0 && -powerchange > applyfrom.getSpecialStat().getPowerCount()) {
                /*  354 */
                applyfrom.dropMessage(5, "施展技能所需的支援能量不足。");
                /*  355 */
                return false;

            }
            /*  357 */
            applyto.addPowerCount(powerchange);

        }

        /*  360 */
        int forceConchange = calcforceConChange(applyfrom);

        /*  362 */
        if (forceConchange != 0 && !passive && this.sourceid != 400031034) {
            /*  363 */
            if (forceConchange < 0 && -forceConchange > applyfrom.getSpecialStat().getForceCon()) {
                /*  364 */
                return false;

            }
            /*  366 */
            applyto.addForceCon(forceConchange, false);

        }


        /*  370 */
        int atGauge1Conchange = calcatGauge1ConChange(applyfrom);
        /*  371 */
        if (atGauge1Conchange != 0) {
            /*  372 */
            if (atGauge1Conchange < 0 && -atGauge1Conchange > applyfrom.getSpecialStat().getRunePoint()) {
                /*  373 */
                applyfrom.dropMessage(5, "使用技能时所需的符文道力不足。。");
                /*  374 */
                return false;

            }
            /*  376 */
            applyto.gainRunePoint(atGauge1Conchange);
            /*  377 */
            int atGauge2Inc = ((Integer) this.info.get(MapleStatInfo.atGauge2Inc)).intValue();
            /*  378 */
            if (atGauge2Inc != 0 &&
                    /*  379 */         applyfrom.getScrollPoint() < 100) {
                /*  380 */
                applyfrom.gainScrollPoint(atGauge2Inc);

            }

        }



        /*  386 */
        int atGauge2Conchange = calcatGauge2ConChange(applyfrom);
        /*  387 */
        if (atGauge2Conchange != 0) {
            /*  388 */
            if (atGauge2Conchange < 0 && -atGauge2Conchange > applyfrom.getSpecialStat().getScrollPoint()) {
                /*  389 */
                applyfrom.dropMessage(5, "使用技能时所需的卷轴道力不足。。");
                /*  390 */
                return false;

            }
            /*  392 */
            applyto.gainScrollPoint(atGauge2Conchange);

        }

        /*  395 */
        if (this.expinc != 0) {
            /*  396 */
            applyto.gainExp(this.expinc, true, true, false);

        }
        /*  398 */
        else if (isReturnScroll()) {
            /*  399 */
            applyReturnScroll(applyto);
            /*  400 */
        } else if (this.useLevel > 0 && !this.skill) {
            /*  401 */
            applyto.setExtractor(new MapleExtractor(applyto, this.sourceid, this.useLevel * 50, 1440));
            /*  402 */
            applyto.getMap().spawnExtractor(applyto.getExtractor());
            /*  403 */
        } else if ((is净化() && makeChanceResult()) || is勇士的意志()) {
            /*  404 */
            applyto.dispelDebuffs();
            /*  405 */
        } else if (this.cureDebuffs.size() > 0) {
            /*  406 */
            for (MapleDisease debuff : this.cureDebuffs) {
                /*  407 */
                applyfrom.dispelDebuff(debuff);

            }
            /*  409 */
        } else if (is龙之献祭()) {
            /*  410 */
            applyto.dispelSkill(1301013);
            /*  411 */
            if (applyto.skillisCooling(1321013)) {
                /*  412 */
                applyto.removeCooldown(1321013);
                /*  413 */
                applyto.getClient().announce(MaplePacketCreator.skillCooldown(1321013, 0));

            }
            /*  415 */
        } else if (is迷雾爆发()) {
            /*  416 */
            int i = ((Integer) this.info.get(MapleStatInfo.y)).intValue();
            /*  417 */
            for (MapleMist mist : applyto.getMap().getAllMistsThreadsafe()) {
                /*  418 */
                if (mist.getOwnerId() == applyto.getId() && mist.getSourceSkill().getId() == 2111003) {
                    /*  419 */
                    if (mist.getSchedule() != null) {
                        /*  420 */
                        mist.getSchedule().cancel(false);
                        /*  421 */
                        mist.setSchedule(null);

                    }
                    /*  423 */
                    if (mist.getPoisonSchedule() != null) {
                        /*  424 */
                        mist.getPoisonSchedule().cancel(false);
                        /*  425 */
                        mist.setPoisonSchedule(null);

                    }
                    /*  427 */
                    applyto.getMap().broadcastMessage(MaplePacketCreator.removeMist(mist.getObjectId(), true));
                    /*  428 */
                    applyto.getMap().removeMapObject((MapleMapObject) mist);
                    /*  429 */
                    i--;
                    /*  430 */
                    if (i <= 0) {

                        break;

                    }

                }

            }
            /*  435 */
        } else if (this.cosmetic > 0) {
            /*  436 */
            if (this.cosmetic >= 30000) {
                /*  437 */
                applyto.setHair(this.cosmetic);
                /*  438 */
                applyto.updateSingleStat(MapleStat.发型, this.cosmetic);
                /*  439 */
            } else if (this.cosmetic >= 20000) {
                /*  440 */
                applyto.setFace(this.cosmetic);
                /*  441 */
                applyto.updateSingleStat(MapleStat.脸型, this.cosmetic);
                /*  442 */
            } else if (this.cosmetic < 100) {
                /*  443 */
                applyto.setSkinColor((byte) this.cosmetic);
                /*  444 */
                applyto.updateSingleStat(MapleStat.皮肤, this.cosmetic);

            }
            /*  446 */
            applyto.equipChanged();
            /*  447 */
        } else if (this.recipe > 0) {
            /*  448 */
            if (applyto.getSkillLevel(this.recipe) > 0 || applyto.getProfessionLevel(this.recipe / 10000 * 10000) < this.reqSkillLevel) {
                /*  449 */
                return false;

            }
            /*  451 */
            applyto.changeSingleSkillLevel((Skill) SkillFactory.getCraft(this.recipe), 2147483647, this.recipeUseCount, (this.recipeValidDay > 0) ? (System.currentTimeMillis() + this.recipeValidDay * 24L * 60L * 60L * 1000L) : -1L);
            /*  452 */
        } else if (is卡牌审判()) {
            /*  453 */
            if (applyto.getCardStack() < applyto.getCarteByJob()) {
                /*  454 */
                applyfrom.dropMessage(5, "必须等卡片值充满后，才能使用技能。");
                /*  455 */
                return false;

            }
            /*  457 */
            applyto.setCardStack(0);
            /*  458 */
        } else if (is狂龙变形()) {
            /*  459 */
            if (applyto.getMorphCount() < 700) {
                /*  460 */
                applyfrom.dropMessage(5, "变形值不足，无法使用该技能。");
                /*  461 */
                return false;

            }
            /*  463 */
            applyto.setMorphCount(0);
            /*  464 */
        } else if (is暗器伤人()) {
            /*  465 */
            MapleInventory use = applyto.getInventory(MapleInventoryType.USE);
            /*  466 */
            boolean itemz = false;
            /*  467 */
            int bulletConsume = ((Integer) this.info.get(MapleStatInfo.bulletConsume)).intValue();
            /*  468 */
            for (int i = 0; i < use.getSlotLimit(); i++) {
                /*  469 */
                Item item = use.getItem((short) i);
                /*  470 */
                if (item != null &&
                        /*  471 */           ItemConstants.is飞镖道具(item.getItemId()) && item.getQuantity() >= bulletConsume) {
                    /*  472 */
                    MapleInventoryManipulator.removeFromSlot(applyto.getClient(), MapleInventoryType.USE, (short) i, (short) bulletConsume, false, true);
                    /*  473 */
                    itemz = true;


                    break;

                }

            }
            /*  478 */
            if (!itemz) {
                /*  479 */
                return false;

            }
            /*  481 */
        } else if (this.sourceid == 400011016 || this.sourceid == 400041041) {

            /*  483 */
            for (MapleMist mist : applyto.getMap().getAllMistsThreadsafe()) {
                /*  484 */
                if (mist.getOwnerId() == applyto.getId() && mist.getSourceSkill().getId() == ((this.sourceid == 400011016) ? 21121068 : this.sourceid)) {
                    /*  485 */
                    if (mist.getSchedule() != null) {
                        /*  486 */
                        mist.getSchedule().cancel(false);
                        /*  487 */
                        mist.setSchedule(null);

                    }
                    /*  489 */
                    if (mist.getPoisonSchedule() != null) {
                        /*  490 */
                        mist.getPoisonSchedule().cancel(false);
                        /*  491 */
                        mist.setPoisonSchedule(null);

                    }
                    /*  493 */
                    applyto.getMap().broadcastMessage(MaplePacketCreator.removeMist(mist.getObjectId(), true));
                    /*  494 */
                    applyto.getMap().removeMapObject((MapleMapObject) mist);

                }

            }

            /*  498 */
            if (this.sourceid == 400011016) {
                /*  499 */
                applyto.gainAranCombo(getZ(), true);

            }
            /*  501 */
        } else if (is无限子弹()) {
            /*  502 */
            MapleInventory use = applyto.getInventory(MapleInventoryType.USE);
            /*  503 */
            boolean itemz = false;
            /*  504 */
            int bulletConsume = ((Integer) this.info.get(MapleStatInfo.bulletConsume)).intValue();
            /*  505 */
            for (int i = 0; i < use.getSlotLimit(); i++) {
                /*  506 */
                Item item = use.getItem((short) i);
                /*  507 */
                if (item != null &&
                        /*  508 */           ItemConstants.is子弹道具(item.getItemId()) && item.getQuantity() >= bulletConsume) {
                    /*  509 */
                    MapleInventoryManipulator.removeFromSlot(applyto.getClient(), MapleInventoryType.USE, (short) i, (short) bulletConsume, false, true);
                    /*  510 */
                    itemz = true;


                    break;

                }

            }
            /*  515 */
            if (!itemz) {
                /*  516 */
                return false;

            }
            /*  518 */
        } else if ((this.effectedOnEnemy > 0 || this.effectedOnAlly > 0) && primary && applyto.inPVP()) {
            /*  519 */
            int types = Integer.parseInt(applyto.getEventInstance().getProperty("type"));
            /*  520 */
            if (types > 0 || this.effectedOnEnemy > 0) {
                /*  521 */
                for (MapleCharacter chr : applyto.getMap().getCharactersThreadsafe()) {
                    /*  522 */
                    if (chr.getId() != applyto.getId() && ((this.effectedOnAlly > 0) ? (chr.getTeam() == applyto.getTeam()) : (chr.getTeam() != applyto.getTeam() || types == 0))) {
                        /*  523 */
                        applyTo(applyto, chr, false, pos, newDuration);

                    }

                }

            }
            /*  527 */
        } else if (this.mobSkill > 0 && this.mobSkillLevel > 0 && primary && applyto.inPVP()) {
            /*  528 */
            if (this.effectedOnEnemy > 0) {
                /*  529 */
                int types = Integer.parseInt(applyto.getEventInstance().getProperty("type"));
                /*  530 */
                for (MapleCharacter chr : applyto.getMap().getCharactersThreadsafe()) {
                    /*  531 */
                    if (chr.getId() != applyto.getId() && (chr.getTeam() != applyto.getTeam() || types == 0)) {
                        /*  532 */
                        chr.disease(this.mobSkill, this.mobSkillLevel);

                    }

                }

                /*  536 */
            } else if (this.sourceid == 2910000 || this.sourceid == 2910001) {
                /*  537 */
                applyto.getClient().announce(EffectPacket.showOwnBuffEffect(this.sourceid, EffectOpcode.UserEffect_JobChanged.getValue(), applyto.getLevel(), this.level));
                /*  538 */
                applyto.getMap().broadcastMessage(applyto, EffectPacket.showBuffeffect(applyto, this.sourceid, EffectOpcode.UserEffect_JobChanged.getValue(), applyto.getLevel(), this.level), false);
                /*  539 */
                applyto.getClient().announce(EffectPacket.showOwnCraftingEffect("UI/UIWindow2.img/CTF/Effect", 0, 0));
                /*  540 */
                applyto.getMap().broadcastMessage(applyto, EffectPacket.showCraftingEffect(applyto.getId(), "UI/UIWindow2.img/CTF/Effect", 0, 0), false);
                /*  541 */
                if (applyto.getTeam() == this.sourceid - 2910000) {
                    /*  542 */
                    if (this.sourceid == 2910000) {
                        /*  543 */
                        applyto.getEventInstance().broadcastPlayerMsg(-7, "The Red Team's flag has been restored.");

                    } else {
                        /*  545 */
                        applyto.getEventInstance().broadcastPlayerMsg(-7, "The Blue Team's flag has been restored.");

                    }
                    /*  547 */
                    applyto.getMap().spawnAutoDrop(this.sourceid, (Point) ((Pair) applyto.getMap().getGuardians().get(this.sourceid - 2910000)).left);

                } else {
                    /*  549 */
                    applyto.disease(this.mobSkill, this.mobSkillLevel);
                    /*  550 */
                    if (this.sourceid == 2910000) {
                        /*  551 */
                        applyto.getEventInstance().setProperty("redflag", String.valueOf(applyto.getId()));
                        /*  552 */
                        applyto.getEventInstance().broadcastPlayerMsg(-7, "The Red Team's flag has been captured!");
                        /*  553 */
                        applyto.getClient().announce(EffectPacket.showOwnCraftingEffect("UI/UIWindow2.img/CTF/Tail/Red", 600000, 0));
                        /*  554 */
                        applyto.getMap().broadcastMessage(applyto, EffectPacket.showCraftingEffect(applyto.getId(), "UI/UIWindow2.img/CTF/Tail/Red", 600000, 0), false);

                    } else {
                        /*  556 */
                        applyto.getEventInstance().setProperty("blueflag", String.valueOf(applyto.getId()));
                        /*  557 */
                        applyto.getEventInstance().broadcastPlayerMsg(-7, "The Blue Team's flag has been captured!");
                        /*  558 */
                        applyto.getClient().announce(EffectPacket.showOwnCraftingEffect("UI/UIWindow2.img/CTF/Tail/Blue", 600000, 0));
                        /*  559 */
                        applyto.getMap().broadcastMessage(applyto, EffectPacket.showCraftingEffect(applyto.getId(), "UI/UIWindow2.img/CTF/Tail/Blue", 600000, 0), false);

                    }

                }

            } else {
                /*  563 */
                applyto.disease(this.mobSkill, this.mobSkillLevel);

            }

            /*  566 */
        } else if (this.randomPickup != null && this.randomPickup.size() > 0) {
            /*  567 */
            MapleItemInformationProvider.getInstance().getItemEffect(((Integer) this.randomPickup.get(Randomizer.nextInt(this.randomPickup.size()))).intValue()).applyTo(applyto);

        }
        /*  569 */
        for (Map.Entry<MapleTraitType, Integer> traitType : this.traits.entrySet()) {
            /*  570 */
            applyto.getTrait(traitType.getKey()).addExp(((Integer) traitType.getValue()).intValue(), applyto);

        }
        /*  572 */
        if (is机械传送门()) {
            /*  573 */
            int newId = 0;
            /*  574 */
            boolean applyBuff = false;
            /*  575 */
            if (applyto.getMechDoors().size() >= 2) {
                /*  576 */
                MechDoor remove = applyto.getMechDoors().remove(0);
                /*  577 */
                newId = remove.getId();
                /*  578 */
                applyto.getMap().broadcastMessage(MaplePacketCreator.removeMechDoor(remove, true));
                /*  579 */
                applyto.getMap().removeMapObject((MapleMapObject) remove);

            } else {
                /*  581 */
                for (MechDoor d : applyto.getMechDoors()) {
                    /*  582 */
                    if (d.getId() == newId) {
                        /*  583 */
                        applyBuff = true;
                        /*  584 */
                        newId = 1;

                        break;

                    }

                }

            }
            /*  589 */
            MechDoor door = new MechDoor(applyto, new Point((pos == null) ? applyto.getTruePosition() : pos), newId);
            /*  590 */
            applyto.getMap().spawnMechDoor(door);
            /*  591 */
            applyto.addMechDoor(door);
            /*  592 */
            applyto.getClient().announce(MaplePacketCreator.mechPortal(door.getTruePosition()));
            /*  593 */
            if (!applyBuff) {
                /*  594 */
                return true;

            }

        }
        /*  597 */
        if (primary && this.availableMap != null) {
            /*  598 */
            for (Pair<Integer, Integer> e : this.availableMap) {
                /*  599 */
                if (applyto.getMapId() < ((Integer) e.left).intValue() || applyto.getMapId() > ((Integer) e.right).intValue()) {
                    /*  600 */
                    applyto.getClient().announce(MaplePacketCreator.enableActions());
                    /*  601 */
                    return true;

                }

            }

        }


        /*  607 */
        if ((this.overTime || this.statups.size() > 0) && !is能量获得() && !is超越攻击()) {
            /*  608 */
            if (getSummonMovementType() != null && !is嗨兄弟()) {
                /*  609 */
                boolean applyBuff = false;
                /*  610 */
                if (is全息力场支援() || is元素火焰()) {
                    /*  611 */
                    applyBuff = applyfrom.hasSummonBySkill(this.sourceid);

                }
                /*  613 */
                if (applyBuff) {
                    /*  614 */
                    if (applyfrom.isShowPacket()) {
                        /*  615 */
                        applyfrom.dropDebugMessage(1, "[BUFF信息] BUFFID: " + this.sourceid + " 持续时间: " + newDuration + " 群体: " + isPartyBuff() + " 被动: " + passive);

                    }
                    /*  617 */
                    applyBuffEffect(applyfrom, applyto, primary, newDuration, passive, subValue);

                } else {
                    /*  619 */
                    applySummonEffect(applyfrom, primary, pos, newDuration, subValue);

                }
                /*  621 */
            } else if (is三彩箭矢()) {
                /*  622 */
                applyArrowsBuff(applyfrom, false);

            } else {
                /*  624 */
                if (applyfrom.isShowPacket()) {
                    /*  625 */
                    applyfrom.dropDebugMessage(1, "[BUFF信息] " + SkillFactory.getSkillName(this.sourceid) + "(" + this.sourceid + ") 持续时间: " + newDuration + " 群体: " + isPartyBuff() + " 被动: " + passive);

                }
                /*  627 */
                applyBuffEffect(applyfrom, applyto, primary, newDuration, passive, subValue);

            }

        }

        /*  631 */
        if (this.skill) {
            /*  632 */
            removeMonsterBuff(applyfrom);

        }
        /*  634 */
        if (primary) {
            /*  635 */
            if ((this.overTime || is群体治愈()) && !is能量获得()) {
                /*  636 */
                applyPartyBuff(applyfrom, newDuration);

            }
            /*  638 */
            if (isMonsterBuff()) {
                /*  639 */
                applyMonsterBuff(applyfrom);

            }

        }
        /*  642 */
        if (is时空门()) {
            /*  643 */
            MapleDoor door = new MapleDoor(applyto, new Point((pos == null) ? applyto.getTruePosition() : pos), this.sourceid);
            /*  644 */
            if (door.getTownPortal() != null) {
                /*  645 */
                applyto.getMap().spawnDoor(door);
                /*  646 */
                applyto.addDoor(door);
                /*  647 */
                MapleDoor townDoor = new MapleDoor(door);
                /*  648 */
                applyto.addDoor(townDoor);
                /*  649 */
                door.getTown().spawnDoor(townDoor);
                /*  650 */
                if (applyto.getParty() != null) {
                    /*  651 */
                    applyto.silentPartyUpdate();

                }

            } else {
                /*  654 */
                applyto.dropMessage(5, "村庄里已经没有可开启时空门的位置。");

            }
            /*  656 */
        } else if (isMist()) {
            /*  657 */
            if (this.sourceid != 400021031) {
                /*  658 */
                Rectangle bounds = calculateBoundingBox((pos != null) ? pos : applyfrom.getPosition(), applyfrom.isFacingLeft());
                /*  659 */
                MapleMist mist = new MapleMist(bounds, applyfrom, this, applyfrom.getPosition());
                /*  660 */
                applyfrom.getMap().spawnMist(mist, getDuration(), false);

            }
            /*  662 */
        } else if (is伺机待发()) {
            /*  663 */
            for (MapleCoolDownValueHolder i : applyto.getCooldowns()) {
                /*  664 */
                if (i.skillId != 5121010) {
                    /*  665 */
                    applyto.removeCooldown(i.skillId);
                    /*  666 */
                    applyto.getClient().announce(MaplePacketCreator.skillCooldown(i.skillId, 0));

                }

            }
            /*  669 */
        } else if (this.sourceid == 400051021) {
            /*  670 */
            applyto.removeCooldown(400051021);
            /*  671 */
            int cooldown = getCooldown(applyfrom);
            /*  672 */
            applyto.getClient().announce(MaplePacketCreator.skillCooldown(400051021, cooldown));
            /*  673 */
            applyto.addCooldown(400051021, System.currentTimeMillis(), (cooldown * 1000));
            /*  674 */
        } else if (is幸运钱()) {
            /*  675 */
            applyto.switchLuckyMoney(false);
            /*  676 */
        } else if (is狂龙战士的威严()) {
            /*  677 */
            for (MapleCoolDownValueHolder i : applyto.getCooldowns()) {
                /*  678 */
                if (i.skillId != 61121054 && i.skillId != 61121052 && i.skillId != 61121053) {
                    /*  679 */
                    applyto.removeCooldown(i.skillId);
                    /*  680 */
                    applyto.getClient().announce(MaplePacketCreator.skillCooldown(i.skillId, 0));

                }

            }
            /*  683 */
        } else if (is金钱炸弹()) {
            /*  684 */
            applyto.handleMesoExplosion();
            /*  685 */
        } else if (is能量激发()) {
            /*  686 */
            applyfrom.setEnergyCount(800);
            /*  687 */
        } else if (is美洲豹技能()) {
            /*  688 */
            applyfrom.getClient().announce(MaplePacketCreator.美洲豹攻击效果(this.sourceid));

        }



        /*  693 */
        if (this.rewardMeso != 0) {
            /*  694 */
            applyto.gainMeso(this.rewardMeso, false);

        }



        /*  699 */
        if (this.rewardItem != null && this.totalprob > 0) {
            /*  700 */
            for (Triple<Integer, Integer, Integer> reward : this.rewardItem) {
                /*  701 */
                if (MapleInventoryManipulator.checkSpace(applyto.getClient(), ((Integer) reward.left).intValue(), ((Integer) reward.mid).intValue(), "") && ((Integer) reward.right).intValue() > 0 && Randomizer.nextInt(this.totalprob) < ((Integer) reward.right).intValue()) {
                    /*  702 */
                    if (ItemConstants.getInventoryType(((Integer) reward.left).intValue()) == MapleInventoryType.EQUIP) {
                        /*  703 */
                        Item item = MapleItemInformationProvider.getInstance().getEquipById(((Integer) reward.left).intValue());
                        /*  704 */
                        item.setGMLog("Reward item (effect): " + this.sourceid + " on " + DateUtil.getCurrentDate());
                        /*  705 */
                        MapleInventoryManipulator.addbyItem(applyto.getClient(), item);
                        continue;

                    }
                    /*  707 */
                    MapleInventoryManipulator.addById(applyto.getClient(), ((Integer) reward.left).intValue(), ((Integer) reward.mid).shortValue(), "Reward item (effect): " + this.sourceid + " on " + DateUtil.getCurrentDate());

                }

            }

        }

        /*  712 */
        if (this.skill && ((Integer) this.info.get(MapleStatInfo.onActive)).intValue() > 0) {

            /*  714 */
            applyto.getClient().announce(MaplePacketCreator.skillNotActive(this.sourceid));

            /*  716 */
            applyto.getClient().announce(MaplePacketCreator.skillActive());

            /*  718 */
            if (JobConstants.is爆莉萌天使(applyto.getJob())) {
                /*  719 */
                applyto.getClient().announce(EffectPacket.showSpecialEffect(EffectOpcode.UserEffect_ResetOnStateForOnOffSkill.getValue()));

            }

        }

        /*  723 */
        if (applyfrom.getJob() == 2711 || applyfrom.getJob() == 2712) {
            /*  724 */
            applyfrom.check生命潮汐();

        }
        /*  726 */
        return true;

    }







    public void applyCoolTime(MapleCharacter player, long time, boolean cancel) {
        /*  734 */
        int cooldown = getCooldown(player, cancel);
        /*  735 */
        if (this.sourceid == 400011001) {
            /*  736 */
            cooldown = getX();

        }
        /*  738 */
        if (cooldown > 0) {
            /*  739 */
            int linkedSkill = SkillConstants.getLinkedAttackSkill(this.sourceid);
            /*  740 */
            if (this.sourceid == 2311012 || this.sourceid == 14110030 || this.sourceid == 24111002) {

                return;

            }
            /*  743 */
            if (this.sourceid == 35111002) {
                /*  744 */
                List<Integer> arrayList = player.getSummonsOIDsBySkillID(this.sourceid);
                /*  745 */
                if (arrayList.size() < 3) {

                    return;

                }
                /*  748 */
                player.getMap().broadcastMessage(MaplePacketCreator.teslaTriangle(player.getId(), ((Integer) arrayList.get(0)).intValue(), ((Integer) arrayList.get(1)).intValue(), ((Integer) arrayList.get(2)).intValue()));

            }
            /*  750 */
            if (!player.skillisCooling((linkedSkill == 1320016) ? this.sourceid : linkedSkill) || linkedSkill == 80002247) {
                /*  751 */
                player.getClient().announce(MaplePacketCreator.skillCooldown(this.sourceid, cooldown));
                /*  752 */
                player.addCooldown((linkedSkill == 1320016) ? this.sourceid : linkedSkill, time, (cooldown * 1000));

            }

        }

    }




    public boolean applySummonEffect(MapleCharacter applyto, boolean primary, Point pos, int newDuration, int subValue) {
        /*  759 */
        SummonMovementType summonMovementType = getSummonMovementType();
        /*  760 */
        if (summonMovementType == null) {
            /*  761 */
            return false;

        }
        /*  763 */
        byte[] buff = null;
        /*  764 */
        boolean isBuff = false;
        /*  765 */
        int summonSkillId = this.sourceid;
        /*  766 */
        MapleStatEffect localeffect = this;
        /*  767 */
        Map<MapleBuffStat, Integer> localstatups = new EnumMap<>(this.statups);
        /*  768 */
        if (applyto.isShowPacket()) {
            /*  769 */
            applyto.dropDebugMessage(1, "[召唤兽] 开始召唤 - 召唤兽技能ID: " + summonSkillId + " 持续时间: " + newDuration);

        }


        /*  773 */
        if (this.sourceid != 151100002 && this.sourceid != 35111002 && this.sourceid != 14000027 && this.sourceid != 112101016 && !SkillConstants.is美洲豹(this.sourceid) && this.sourceid != 400051023) {
            /*  774 */
            applyto.cancelEffect(this, true, -1L, localstatups);

        }

        /*  777 */
        if (this.sourceid == 23111008) {
            /*  778 */
            summonSkillId += Randomizer.nextInt(3);

        }



        /*  783 */
        if (subValue > 0) {
            /*  784 */
            MapleMonster monster = applyto.getMap().getMonsterByOid(subValue);
            /*  785 */
            if (monster == null) {
                /*  786 */
                return false;

            }
            /*  788 */
            subValue = monster.getId();

        }

        /*  791 */
        MapleSummon tosummon = new MapleSummon(applyto, summonSkillId, getLevel(), new Point((pos == null) ? applyto.getTruePosition() : pos), summonMovementType, newDuration, subValue);

        /*  793 */
        if (this.sourceid == 400011006) {
            /*  794 */
            tosummon.setStance(4);

        }


        /*  798 */
        applyto.getMap().spawnSummon(tosummon);
        /*  799 */
        applyto.addSummon(tosummon);

        /*  801 */
        if (is集合船员())
            /*  802 */ {
            int skilllevel = applyto.getTotalSkillLevel(5220019);
            /*  803 */
            if (skilllevel > 0) {
                /*  804 */
                SkillFactory.getSkill(5220019).getEffect(skilllevel).applyBuffEffect(applyto, applyto, primary, newDuration);

            }
        }
        /*  806 */
        else if (((Integer) this.info.get(MapleStatInfo.hcSummonHp)).intValue() > 0)
            /*  807 */ {
            tosummon.setSummonHp(((Integer) this.info.get(MapleStatInfo.hcSummonHp)).intValue());
        }
        /*  808 */
        else if (this.sourceid == 3221014)
            /*  809 */ {
            tosummon.setSummonHp(((Integer) this.info.get(MapleStatInfo.x)).intValue());
        }
        /*  810 */
        else if (this.sourceid == 13120007)
            /*  811 */ {
            applyto.dispelSkill(13111024);
        }
        /*  812 */
        else if (this.sourceid == 4341006)
            /*  813 */ {
            applyto.cancelEffectFromBuffStat(MapleBuffStat.影分身);
        }
        /*  814 */
        else if (is灵魂助力())

             {
            /*  817 */
            localstatups.put(MapleBuffStat.灵魂助力, Integer.valueOf(applyto.getTotalSkillLevel(this.sourceid)));
            /*  818 */
            isBuff = true;
        }
        /*  819 */
        else if (is元素火焰())
            /*  820 */ {
            localstatups = Collections.singletonMap(MapleBuffStat.IndieSummoned, Integer.valueOf(1));



        }

        /*  825 */
        else if (this.sourceid == 400011005)
            /*  826 */ {
            localstatups.put(MapleBuffStat.IndieSummoned, Integer.valueOf(applyto.getTotalSkillLevel(this.sourceid)));
            /*  827 */
            isBuff = true;
        }
        /*  828 */
        else if (this.sourceid == 12120013 || this.sourceid == 12120014)
            /*  829 */ {
            applyto.dispelSkill((this.sourceid == 12120013) ? 12120014 : 12120013);



            /*  833 */
            localstatups.put(MapleBuffStat.百分比无视防御, Integer.valueOf(applyto.getTotalSkillLevel(12121004)));
            /*  834 */
            isBuff = true;
        }
        /*  835 */
        else if (is全息力场支援())
            /*  836 */ {
            localstatups.put(MapleBuffStat.IndieSummoned, Integer.valueOf(applyto.getTotalSkillLevel(this.sourceid)));
            /*  837 */
            isBuff = true;
        }
        /*  838 */
        else if (is影子侍从())
            /*  839 */ {
            localstatups.put(MapleBuffStat.影子侍从, Integer.valueOf(applyto.getTotalSkillLevel(this.sourceid)));


            /*  842 */
            isBuff = true;
        }
        /*  843 */
        else if (is召唤美洲豹())

             {


            /*  848 */
            localstatups.put(MapleBuffStat.召唤美洲豹, Integer.valueOf(((Integer) this.info.get(MapleStatInfo.asrR)).intValue() << 8 + ((Integer) this.info.get(MapleStatInfo.criticaldamageMin)).intValue()));
            /*  849 */
            isBuff = true;
            /*  850 */
            applyto.getClient().announce(MaplePacketCreator.openPantherAttack(true));
        }
        /*  851 */
        else if (is死亡契约())

             {

            /*  855 */
            localstatups.put(MapleBuffStat.死亡契约, Integer.valueOf(applyto.getTotalSkillLevel(this.sourceid)));
            /*  856 */
            isBuff = true;
        }
        /*  857 */
        else {
            if (is嗨兄弟() || is苍空之子结晶()) {
                /*  858 */
                server.Timer.BuffTimer.getInstance().schedule(() -> {

                    applyto.getMap().broadcastMessage(SummonPacket.removeSummon(tosummon, true));

                    applyto.getMap().removeMapObject((MapleMapObject) tosummon);

                    applyto.removeVisibleMapObject((MapleMapObject) tosummon);

                    applyto.removeSummon(tosummon);
                    /*  863 */
                }, is嗨兄弟() ? (newDuration * 1000) : newDuration);
                /*  864 */
                return true;
                /*  865 */
            }
            if (this.sourceid == 400001012) {
                /*  866 */
                applyto.dispelSkill(3111005);
                /*  867 */
                applyto.dispelSkill(3211005);
                /*  868 */
            } else if (this.sourceid == 400051011) {
                /*  869 */
                localstatups.put(MapleBuffStat.爱星能量, Integer.valueOf(1));


                /*  872 */
                isBuff = true;
                /*  873 */
            } else if (this.sourceid == 80011261 || this.sourceid == 400051046 || this.sourceid == 400051022 || this.sourceid == 400051023) {
                /*  874 */
                localstatups.put(MapleBuffStat.IndieSummoned, Integer.valueOf(applyto.getTotalSkillLevel(this.sourceid)));
                /*  875 */
                isBuff = true;

            }
            /*  877 */
            else if (this.sourceid == 400011006) {
                /*  878 */
                localstatups.put(MapleBuffStat.暴击概率, this.info.get(MapleStatInfo.indieCr));
                /*  879 */
                localstatups.put(MapleBuffStat.SECONDARY_STAT_IndiePMdR, this.info.get(MapleStatInfo.indiePMdR));
                /*  880 */
                localstatups.put(MapleBuffStat.IndieSummoned, Integer.valueOf(applyto.getTotalSkillLevel(this.sourceid)));
                /*  881 */
                localstatups.put(MapleBuffStat.精灵元素, Integer.valueOf(applyto.getTotalSkillLevel(this.sourceid)));
                /*  882 */
                isBuff = true;

            }
        }



        /*  887 */
        long startTime = System.currentTimeMillis();
        /*  888 */
        if (newDuration > 0) {
            /*  889 */
            CancelEffectAction cancelAction = new CancelEffectAction(applyto, localeffect, startTime, localstatups);
            /*  890 */
            ScheduledFuture<?> schedule = server.Timer.BuffTimer.getInstance().schedule(cancelAction, newDuration);
            /*  891 */
            applyto.registerEffect(localeffect, startTime, schedule, localstatups, false, newDuration, applyto.getId());

        } else {
            /*  893 */
            applyto.registerEffect(localeffect, startTime, null, localstatups, false, newDuration, applyto.getId());

        }

        /*  896 */
        int cooldown = getCooldown(applyto);
        /*  897 */
        if (cooldown > 0) {
            /*  898 */
            if (this.sourceid == 35111002) {
                /*  899 */
                List<Integer> count = new ArrayList<>();
                /*  900 */
                List<MapleSummon> summons = applyto.getSummonsReadLock();

                try {
                    /*  902 */
                    for (MapleSummon summon : summons) {
                        /*  903 */
                        if (summon.getSkillId() == this.sourceid) {
                            /*  904 */
                            count.add(Integer.valueOf(summon.getObjectId()));

                        }

                    }

                } finally {
                    /*  908 */
                    applyto.unlockSummonsReadLock();

                }

                /*  911 */
                if (count.size() == 3) {
                    /*  912 */
                    applyto.getClient().announce(MaplePacketCreator.skillCooldown(this.sourceid, cooldown));
                    /*  913 */
                    applyto.addCooldown(this.sourceid, startTime, (cooldown * 1000));
                    /*  914 */
                    applyto.getMap().broadcastMessage(MaplePacketCreator.teslaTriangle(applyto.getId(), ((Integer) count.get(0)).intValue(), ((Integer) count.get(1)).intValue(), ((Integer) count.get(2)).intValue()));

                }

                /*  917 */
            } else if (!SkillConstants.isNoApplyTo(this.sourceid)) {
                /*  918 */
                if (applyto.skillisCooling(this.sourceid)) {
                    /*  919 */
                    applyto.dropMessage(5, "技能由于冷却时间限制，暂时无法使用。");
                    /*  920 */
                    applyto.getClient().announce(MaplePacketCreator.enableActions());
                    /*  921 */
                    return false;

                }
                /*  923 */
                if (applyto.isAdmin()) {
                    /*  924 */
                    applyto.dropDebugMessage(2, "[技能冷却] 为GM消除技能冷却时间, 原技能冷却时间:" + cooldown + "秒.");

                }
                /*  926 */
                else if (ServerConfig.WORLD_SKILL_NOCOOLDOWN) {
                    /*  927 */
                    applyto.dropDebugMessage(2, "[技能冷却] 为普通玩家消除BUFF技能冷却时间, 原技能冷却时间:" + cooldown + "秒.");

                } else {
                    /*  929 */
                    applyto.getClient().announce(MaplePacketCreator.skillCooldown(this.sourceid, cooldown));
                    /*  930 */
                    applyto.addCooldown(this.sourceid, startTime, (cooldown * 1000));

                }

            }

        }



        /*  937 */
        if (buff != null || isBuff) {
            /*  938 */
            buff = BuffPacket.giveBuff(this.sourceid, newDuration, localstatups, this, applyto);
            /*  939 */
            applyto.getClient().announce(buff);

        }
        /*  941 */
        return true;

    }






    public boolean applyReturnScroll(MapleCharacter applyto) {
        /*  948 */
        if (this.moveTo != -1) {


            /*  951 */
            MapleMap target = null;
            /*  952 */
            boolean nearest = false;
            /*  953 */
            if (this.moveTo == 999999999) {
                /*  954 */
                nearest = true;
                /*  955 */
                if (applyto.getMap().getReturnMapId() != 999999999) {
                    /*  956 */
                    target = applyto.getMap().getReturnMap();

                }

            } else {
                /*  959 */
                target = ChannelServer.getInstance(applyto.getClient().getChannel()).getMapFactory().getMap(this.moveTo);
                /*  960 */
                if (target.getId() == 931050500 && target != applyto.getMap()) {
                    /*  961 */
                    applyto.changeMap(target, target.getPortal(0));
                    /*  962 */
                    return true;

                }
                /*  964 */
                int targetMapId = target.getId() / 10000000;
                /*  965 */
                int charMapId = applyto.getMapId() / 10000000;
                /*  966 */
                if (targetMapId != 60 && charMapId != 61 &&
                        /*  967 */           targetMapId != 21 && charMapId != 20 &&
                        /*  968 */           targetMapId != 12 && charMapId != 10 &&
                        /*  969 */           targetMapId != 10 && charMapId != 12 &&
                        /*  970 */           targetMapId != charMapId) {
                    /*  971 */
                    log.info("玩家 " + applyto.getName() + " 尝试回到一个非法的位置 (" + applyto.getMapId() + "->" + target.getId() + ")");
                    /*  972 */
                    return false;

                }

            }




            /*  979 */
            if (target == applyto.getMap() || (nearest && applyto.getMap().isTown())) {
                /*  980 */
                return false;

            }
            /*  982 */
            if (target != null) {
                /*  983 */
                applyto.changeMap(target, target.getPortal(0));
                /*  984 */
                return true;

            }

        }
        /*  987 */
        return false;

    }


































































    private void applyPartyBuff(MapleCharacter applyfrom, int newDuration) {
        /* 1054 */
        if (isPartyPassiveBuff() && applyfrom.getParty() != null) {
            /* 1055 */
            for (MaplePartyCharacter partyMember : applyfrom.getParty().getMembers()) {
                /* 1056 */
                MapleCharacter member = applyfrom.getMap().getCharacterById(partyMember.getId());
                /* 1057 */
                if (member != null && member.getId() != applyfrom.getId() && member.isAlive()) {
                    /* 1058 */
                    applyTo(applyfrom, member, false, null, newDuration);

                }

            }
            /* 1061 */
        } else if (isPartyBuff() && (applyfrom.getParty() != null || isGmBuff() || applyfrom.inPVP())) {
            /* 1062 */
            Rectangle bounds = calculateBoundingBox(applyfrom.getTruePosition(), applyfrom.isFacingLeft());
            /* 1063 */
            List<MapleMapObject> affecteds = applyfrom.getMap().getMapObjectsInRect(bounds, Collections.singletonList(MapleMapObjectType.PLAYER));
            /* 1064 */
            for (MapleMapObject affectedmo : affecteds) {
                /* 1065 */
                MapleCharacter affected = (MapleCharacter) affectedmo;
                /* 1066 */
                if (affected.getId() != applyfrom.getId() && (isGmBuff() || (applyfrom.inPVP() && affected.getTeam() == applyfrom.getTeam() && Integer.parseInt(applyfrom.getEventInstance().getProperty("type")) != 0) || (applyfrom.getParty() != null && affected.getParty() != null && applyfrom.getParty().getPartyId() == affected.getParty().getPartyId()))) {
                    /* 1067 */
                    boolean applyBuff = false;
                    /* 1068 */
                    if (is复活术() && !affected.isAlive()) {
                        /* 1069 */
                        applyBuff = true;

                    }
                    /* 1071 */
                    if (!is复活术() && affected.isAlive()) {
                        /* 1072 */
                        applyBuff = true;
                        /* 1073 */
                        if (is传说冒险家()) {
                            /* 1074 */
                            applyBuff = (affected.getJob() >= 0 && affected.getJob() < 1000);
                            /* 1075 */
                        } else if (is守护者之荣誉()) {
                            /* 1076 */
                            applyBuff = (affected.getJob() >= 1000 && affected.getJob() < 2000);
                            /* 1077 */
                        } else if (is英雄奥斯()) {
                            /* 1078 */
                            applyBuff = (affected.getJob() >= 2000 && affected.getJob() < 3000);
                            /* 1079 */
                        } else if (is自由之墙()) {
                            /* 1080 */
                            applyBuff = (affected.getJob() >= 3000 && affected.getJob() < 4000);

                        }

                    }
                    /* 1083 */
                    if (applyBuff) {
                        /* 1084 */
                        applyTo(applyfrom, affected, false, null, newDuration);
                        /* 1085 */
                        affected.getClient().announce(EffectPacket.showOwnBuffEffect(this.sourceid, EffectOpcode.UserEffect_SkillAffected.getValue(), applyfrom.getLevel(), this.level));
                        /* 1086 */
                        affected.getMap().broadcastMessage(affected, EffectPacket.showBuffeffect(affected, this.sourceid, EffectOpcode.UserEffect_SkillAffected.getValue(), applyfrom.getLevel(), this.level), false);

                    }
                    /* 1088 */
                    if (is伺机待发()) {
                        /* 1089 */
                        for (MapleCoolDownValueHolder i : affected.getCooldowns()) {
                            /* 1090 */
                            if (i.skillId != 5121010) {
                                /* 1091 */
                                affected.removeCooldown(i.skillId);
                                /* 1092 */
                                affected.getClient().announce(MaplePacketCreator.skillCooldown(i.skillId, 0));

                            }

                        }

                    }

                }

            }

        }

    }



    public void h(MapleCharacter applyFrom, boolean bl2) {
        /* 1102 */
        if (!bl2) {
            /* 1103 */
            for (MapleMapObject object : applyFrom.getMap().getMapObjectsInRect(calculateBoundingBox(applyFrom.getTruePosition(), applyFrom.isFacingLeft()), Collections.singletonList(MapleMapObjectType.PLAYER))) {
                /* 1104 */
                MapleCharacter applyTo = (MapleCharacter) object;
                /* 1105 */
                if ((applyTo.getParty() != null && applyTo.getParty().getMemberById(applyFrom.getId()) != null && applyTo.getBuffStats(this, -1L).isEmpty()) || (applyTo.getId() == applyFrom.getId() && applyTo.getBuffStats(this, -1L).isEmpty())) {
                    /* 1106 */
                    applyPartyBuff(applyFrom, getDuration());

                }

            }
            /* 1109 */
            if (applyFrom.getMap().getCharacterById_InMap(applyFrom.getId()) != null && applyFrom.getMap().getCharacterById_InMap(applyFrom.getId()).getParty() != null) {
                /* 1110 */
                for (MaplePartyCharacter member : applyFrom.getMap().getCharacterById_InMap(applyFrom.getId()).getParty().getMembers()) {
                    /* 1111 */
                    List list = applyFrom.getMap().getCharactersIntersect(calculateBoundingBox(applyFrom.getTruePosition(), applyFrom.isFacingLeft()));
                    /* 1112 */
                    MapleCharacter p3 = applyFrom.getMap().getCharacterById_InMap(member.getId());
                    /* 1113 */
                    if (list != null && p3 != null && !list.contains(p3) && p3.getBuffStats(this, -1L) != null) {
                        /* 1114 */
                        applyFrom.getMap().getCharacterById_InMap(member.getId()).cancelEffect(this, false, -1L);

                    }

                }


            }
            /* 1119 */
        } else if (getMonsterStati().size() > 0) {
            /* 1120 */
            for (MapleMapObject object : applyFrom.getMap().getMapObjectsInRect(MapleStatEffectFactory.calculateBoundingBox(this, applyFrom.getTruePosition(), applyFrom.isFacingLeft()), Collections.singletonList(MapleMapObjectType.MONSTER))) {
                /* 1121 */
                ((MapleMonster) object).applyStatus(applyFrom, getMonsterStati(), false, getDuration(applyFrom), true, this);

            }

        }

    }




    public boolean is灵魂之石() {
        /* 1128 */
        return (this.skill && this.sourceid == 22181003);

    }



    public void w(boolean bl2) {
        /* 1132 */
        this.bxi = bl2;

    }



    public boolean jR() {
        /* 1136 */
        if (this.lt == null || this.rb == null || !this.bxi) {
            /* 1137 */
            return is灵魂之石();

        }
        /* 1139 */
        return this.bxi;

    }



    private void removeMonsterBuff(MapleCharacter applyfrom) {
        /* 1143 */
        List<MonsterStatus> cancel = new ArrayList<>();
        /* 1144 */
        switch (this.sourceid) {

            case 1121016:

            case 1221014:

            case 1321014:

            case 51111005:
                /* 1149 */
                cancel.add(MonsterStatus.MOB_STAT_PGuardUp);
                /* 1150 */
                cancel.add(MonsterStatus.MOB_STAT_MGuardUp);
                /* 1151 */
                cancel.add(MonsterStatus.MOB_STAT_PowerUp);
                /* 1152 */
                cancel.add(MonsterStatus.MOB_STAT_MagicUp);

                break;

            default:

                return;

        }
        /* 1157 */
        Rectangle bounds = calculateBoundingBox(applyfrom.getTruePosition(), applyfrom.isFacingLeft());
        /* 1158 */
        List<MapleMapObject> affected = applyfrom.getMap().getMapObjectsInRect(bounds, Collections.singletonList(MapleMapObjectType.MONSTER));
        /* 1159 */
        int i = 0;
        /* 1160 */
        for (MapleMapObject mo : affected) {
            /* 1161 */
            if (makeChanceResult()) {
                /* 1162 */
                for (MonsterStatus stat : cancel) {
                    /* 1163 */
                    ((MapleMonster) mo).cancelStatus(stat);

                }

            }
            /* 1166 */
            i++;
            /* 1167 */
            if (i >= ((Integer) this.info.get(MapleStatInfo.mobCount)).intValue()) {

                break;

            }

        }

    }



    public void applyMonsterBuff(MapleCharacter applyfrom) {
        /* 1174 */
        Rectangle bounds = calculateBoundingBox(applyfrom.getTruePosition(), applyfrom.isFacingLeft());
        /* 1175 */
        boolean pvp = applyfrom.inPVP();
        /* 1176 */
        MapleMapObjectType types = pvp ? MapleMapObjectType.PLAYER : MapleMapObjectType.MONSTER;
        /* 1177 */
        List<MapleMapObject> affected = (this.sourceid == 35111008) ? applyfrom.getMap().getMapObjectsInRange(applyfrom.getTruePosition(), Double.POSITIVE_INFINITY, Collections.singletonList(types)) : applyfrom.getMap().getMapObjectsInRect(bounds, Collections.singletonList(types));
        /* 1178 */
        int i = 0;
        /* 1179 */
        for (MapleMapObject mo : affected) {
            /* 1180 */
            if (makeChanceResult()) {
                /* 1181 */
                for (Map.Entry<MonsterStatus, Integer> stat : getMonsterStati().entrySet()) {
                    /* 1182 */
                    if (pvp) {
                        /* 1183 */
                        MapleCharacter chr = (MapleCharacter) mo;
                        /* 1184 */
                        MapleDisease d = MonsterStatus.getLinkedDisease(stat.getKey());
                        /* 1185 */
                        if (d != null)
                            /* 1186 */
                            chr.giveDebuff(d, ((Integer) stat.getValue()).intValue(), getDuration(), d.getDisease(), 1);

                        continue;

                    }
                    /* 1189 */
                    MapleMonster mons = (MapleMonster) mo;
                    /* 1190 */
                    if (this.sourceid == 35111008 && mons.getStats().isBoss()) {

                        break;

                    }
                    /* 1193 */
                    mons.applyStatus(applyfrom, new MonsterStatusEffect(stat.getKey(), stat.getValue(), this.sourceid, null, false), isPoison(), isSubTime(this.sourceid) ? getSubTime() : getDuration(), true, this);

                }









                /* 1204 */
                if (pvp && this.skill) {
                    /* 1205 */
                    MapleCharacter chr = (MapleCharacter) mo;
                    /* 1206 */
                    handleExtraPVP(applyfrom, chr);

                }

            }
            /* 1209 */
            i++;
            /* 1210 */
            if (i >= ((Integer) this.info.get(MapleStatInfo.mobCount)).intValue() && this.sourceid != 35111008) {

                break;

            }

        }

    }



    public boolean isSubTime(int source) {
        /* 1217 */
        switch (source) {

            case 1211013:

            case 11111023:

            case 23111008:

            case 23111009:

            case 23111010:

            case 31101003:

            case 31121003:

            case 31121005:

            case 61111002:

            case 61111220:
                /* 1228 */
                return true;

        }
        /* 1230 */
        return false;

    }



    public void handleExtraPVP(MapleCharacter applyfrom, MapleCharacter chr) {
        /* 1234 */
        if (this.sourceid == 1211013 || (JobConstants.is新手职业(this.sourceid / 10000) && this.sourceid % 10000 == 104)) {
            /* 1235 */
            Map<MapleBuffStat, Integer> localstatups;
            long starttime = System.currentTimeMillis();
            /* 1236 */
            int localsourceid = this.sourceid;

            /* 1238 */
            if (this.sourceid == 1211013) {
                /* 1239 */
                localstatups = Collections.singletonMap(MapleBuffStat.压制术, Integer.valueOf(this.level));

            } else {
                /* 1241 */
                localstatups = Collections.singletonMap(MapleBuffStat.变身效果, this.info.get(MapleStatInfo.x));

            }
            /* 1243 */
            chr.send(BuffPacket.giveBuff(localsourceid, getDuration(), localstatups, this, chr));
            /* 1244 */
            chr.registerEffect(this, starttime, server.Timer.BuffTimer.getInstance().schedule(new CancelEffectAction(chr, this, starttime, localstatups), isSubTime(this.sourceid) ? getSubTime() : getDuration()), localstatups, false, getDuration(), applyfrom.getId());

        }

    }



    public Rectangle calculateBoundingBox(Point posFrom, boolean facingLeft) {
        /* 1249 */
        return MapleStatEffectFactory.calculateBoundingBox(posFrom, facingLeft, this.lt, this.rb, ((Integer) this.info.get(MapleStatInfo.range)).intValue());

    }



    public Rectangle calculateBoundingBox(Point posFrom, boolean facingLeft, int addedRange) {
        /* 1253 */
        return MapleStatEffectFactory.calculateBoundingBox(posFrom, facingLeft, this.lt, this.rb, ((Integer) this.info.get(MapleStatInfo.range)).intValue() + addedRange);

    }



    public double getMaxDistanceSq() {
        /* 1257 */
        int maxX = Math.max(Math.abs((this.lt == null) ? 0 : this.lt.x), Math.abs((this.rb == null) ? 0 : this.rb.x));
        /* 1258 */
        int maxY = Math.max(Math.abs((this.lt == null) ? 0 : this.lt.y), Math.abs((this.rb == null) ? 0 : this.rb.y));
        /* 1259 */
        return (maxX * maxX + maxY * maxY);

    }






    public void silentApplyBuff(MapleCharacter chr, long starttime, int localDuration, Map<MapleBuffStat, Integer> statup, int chrId) {
        /* 1266 */
        int maskedDuration = 0;
        /* 1267 */
        int newDuration = Math.max(0, (int) (starttime + localDuration - System.currentTimeMillis()));
        /* 1268 */
        if (is终极无限()) {
            /* 1269 */
            maskedDuration = alchemistModifyVal(chr, 4000, false);

        }

        /* 1272 */
        if (newDuration <= 0) {
            /* 1273 */
            maskedDuration = 500;

        }
        /* 1275 */
        ScheduledFuture<?> schedule = server.Timer.BuffTimer.getInstance().schedule(new CancelEffectAction(chr, this, starttime, statup), (maskedDuration > 0) ? maskedDuration : newDuration);
        /* 1276 */
        chr.registerEffect(this, starttime, schedule, statup, true, localDuration, chrId);
        /* 1277 */
        SummonMovementType summonMovementType = getSummonMovementType();
        /* 1278 */
        if (summonMovementType != null && !summonMovementType.equals(SummonMovementType.自由移动)) {
            /* 1279 */
            MapleSummon summon = new MapleSummon(chr, this, chr.getTruePosition(), summonMovementType, newDuration, 0);
            /* 1280 */
            if (!summon.is替身术()) {
                /* 1281 */
                chr.getMap().spawnSummon(summon);
                /* 1282 */
                chr.addSummon(summon);
                /* 1283 */
                summon.addSummonHp(((Integer) this.info.get(MapleStatInfo.x)).shortValue());
                /* 1284 */
                if (is灵魂助力()) {
                    /* 1285 */
                    summon.addSummonHp(1);

                }

            }

        }

    }






    public void applyEnergyBuff(MapleCharacter applyto) {
        /* 1295 */
        applyEnergyBuff(applyto, ((Integer) this.info.get(MapleStatInfo.x)).intValue());

    }



    public void applyEnergyBuff(MapleCharacter applyto, int senergy) {
        /* 1299 */
        long startTime = System.currentTimeMillis();
        /* 1300 */
        int localDuration = 2100000000;
        /* 1301 */
        Map<MapleBuffStat, Integer> localstatups = Collections.singletonMap(MapleBuffStat.能量获得, Integer.valueOf(senergy));
        /* 1302 */
        applyto.cancelEffect(this, true, -1L, localstatups);
        /* 1303 */
        CancelEffectAction cancelAction = new CancelEffectAction(applyto, this, startTime, localstatups);
        /* 1304 */
        ScheduledFuture<?> schedule = server.Timer.BuffTimer.getInstance().schedule(cancelAction, localDuration);
        /* 1305 */
        applyto.registerEffect(this, startTime, schedule, localstatups, false, localDuration, applyto.getId());

        /* 1307 */
        applyto.getClient().announce(EffectPacket.showOwnBuffEffect(this.sourceid, EffectOpcode.UserEffect_SkillAffected.getValue(), applyto.getLevel(), this.level));
        /* 1308 */
        applyto.getClient().announce(BuffPacket.giveEnergyCharge(senergy, this.sourceid, false, false));

        /* 1310 */
        applyto.getMap().broadcastMessage(applyto, EffectPacket.showBuffeffect(applyto, this.sourceid, EffectOpcode.UserEffect_SkillAffected.getValue(), applyto.getLevel(), this.level), false);
        /* 1311 */
        applyto.getMap().broadcastMessage(applyto, BuffPacket.showEnergyCharge(applyto.getId(), senergy, this.sourceid, false, false), false);

    }






    public void applyTranscendBuff(MapleCharacter applyto) {
        /* 1318 */
        long startTime = System.currentTimeMillis();
        /* 1319 */
        int localDuration = ((Integer) this.info.get(MapleStatInfo.time)).intValue();
        /* 1320 */
        int skillId = SkillConstants.getLinkedAttackSkill(this.sourceid);
        /* 1321 */
        int buffSourceId = applyto.getBuffSource(MapleBuffStat.超越攻击);
        /* 1322 */
        if (buffSourceId > -1 && buffSourceId != skillId) {
            /* 1323 */
            applyto.cancelEffectFromBuffStat(MapleBuffStat.超越攻击);

        }
        /* 1325 */
        MapleStatEffect effect = SkillFactory.getSkill(skillId).getEffect(applyto.getTotalSkillLevel(skillId));
        /* 1326 */
        int combos = applyto.getBuffedIntValue(MapleBuffStat.超越攻击);
        /* 1327 */
        if (combos == 0) {
            /* 1328 */
            combos = 1;

        } else {
            /* 1330 */
            combos++;

        }
        /* 1332 */
        if (combos > 4) {
            /* 1333 */
            combos = 4;

        }

        /* 1336 */
        Map<MapleBuffStat, Integer> localstatups = Collections.singletonMap(MapleBuffStat.超越攻击, Integer.valueOf(combos));

        /* 1338 */
        applyto.cancelEffect(effect, true, -1L, localstatups);

        /* 1340 */
        CancelEffectAction cancelAction = new CancelEffectAction(applyto, effect, startTime, localstatups);
        /* 1341 */
        ScheduledFuture<?> schedule = server.Timer.BuffTimer.getInstance().schedule(cancelAction, localDuration);

        /* 1343 */
        applyto.registerEffect(effect, startTime, schedule, localstatups, false, localDuration, applyto.getId());

        /* 1345 */
        applyto.getClient().announce(BuffPacket.giveBuff(skillId, localDuration, localstatups, effect, applyto));

    }






    public void applyArrowsBuff(MapleCharacter applyto, boolean reset) {
        /* 1352 */
        long startTime = System.currentTimeMillis();
        /* 1353 */
        int localDuration = ((Integer) this.info.get(MapleStatInfo.time)).intValue();
        /* 1354 */
        int mode = applyto.getSpecialStat().getArrowsMode();
        /* 1355 */
        mode++;
        /* 1356 */
        if (mode > 2 || mode == -1) {
            /* 1357 */
            mode = 0;

        }
        /* 1359 */
        int arrows = applyto.getBuffedIntValue(MapleBuffStat.三彩箭矢);
        /* 1360 */
        if (arrows == 0 || reset) {
            /* 1361 */
            mode = 0;
            /* 1362 */
            arrows = 101010;
            /* 1363 */
            Skill skil = SkillFactory.getSkill(3121016);
            /* 1364 */
            if (applyto.getSkillLevel(skil) > 0) {
                /* 1365 */
                MapleStatEffect effect = skil.getEffect(applyto.getSkillLevel(skil));
                /* 1366 */
                if (effect != null) {
                    /* 1367 */
                    arrows = 10000 * effect.getY() + 100 * effect.getY() + effect.getZ();

                }

            }

        }
        /* 1371 */
        applyto.getSpecialStat().setArrowsMode(mode);
        /* 1372 */
        Map<MapleBuffStat, Integer> localstatups = Collections.singletonMap(MapleBuffStat.三彩箭矢, Integer.valueOf(arrows));
        /* 1373 */
        applyto.cancelEffect(this, true, -1L, localstatups);
        /* 1374 */
        CancelEffectAction cancelAction = new CancelEffectAction(applyto, this, startTime, localstatups);
        /* 1375 */
        ScheduledFuture<?> schedule = server.Timer.BuffTimer.getInstance().schedule(cancelAction, localDuration);
        /* 1376 */
        applyto.registerEffect(this, startTime, schedule, localstatups, false, localDuration, applyto.getId());

        /* 1378 */
        applyto.getClient().announce(BuffPacket.giveBuff(this.sourceid, localDuration, localstatups, this, applyto));

        /* 1380 */
        int newArrows = 10;
        /* 1381 */
        if (mode == 0) {
            /* 1382 */
            newArrows = arrows / 10000;
            /* 1383 */
        } else if (mode == 1) {
            /* 1384 */
            newArrows = arrows % 10000 / 100;
            /* 1385 */
        } else if (mode == 2) {
            /* 1386 */
            newArrows = arrows % 100;

        }
        /* 1388 */
        applyto.getClient().announce(EffectPacket.showArrowsEffect(this.sourceid, applyto.getSpecialStat().getArrowsMode(), newArrows));

    }




    public static void apply双重防御(MapleCharacter player) {
        /* 1393 */
        int skillLevel = player.getSkillLevel(36111003);
        /* 1394 */
        Skill skill = SkillFactory.getSkill(36111003);
        /* 1395 */
        MapleStatEffect effect = skill.getEffect(skillLevel);
        /* 1396 */
        if (!JobConstants.is尖兵(player.getJob()) || player.getBuffStatValueHolder(MapleBuffStat.黑暗高潮) == null) {

            return;

        }
        /* 1399 */
        effect.applyBuffEffect(player, 2100000000, true);

    }



    public void applyBuffEffect(MapleCharacter applyfrom, MapleCharacter applyto, boolean primary, int newDuration) {
        /* 1403 */
        applyBuffEffect(applyfrom, applyto, primary, newDuration, false, 0);

    }



    public void applyBuffEffect(MapleCharacter applyfrom, int newDuration, boolean primary) {
        /* 1407 */
        applyBuffEffect(applyfrom, applyfrom, false, newDuration, primary, 0);

    }



    private int getHpMpChange(MapleCharacter applyfrom, boolean hpchange) {
        /* 1411 */
        int change = 0;
        /* 1412 */
        if (this.hpR != 0.0D || this.mpR != 0.0D) {
            /* 1413 */
            double healHpRate = this.hpR;
            /* 1414 */
            if (is元气恢复()) {
                /* 1415 */
                healHpRate -= applyfrom.getBuffedIntValue(MapleBuffStat.元气恢复) / 100.0D;
                /* 1416 */
                if (healHpRate <= 0.0D) {
                    /* 1417 */
                    return 0;

                }

            }
            /* 1420 */
            if (applyfrom.isShowPacket()) {
                /* 1421 */
                applyfrom.dropMessage(-5, "HpMpChange => 默认: " + this.hpR + " - " + healHpRate);

            }
            /* 1423 */
            int maxChange = ((hpchange ? healHpRate : this.mpR) < 1.0D) ? Math.min(49999, (int) Math.floor(99999.0D * (hpchange ? healHpRate : this.mpR))) : 99999;
            /* 1424 */
            int current = hpchange ? applyfrom.getStat().getCurrentMaxHp() : applyfrom.getStat().getCurrentMaxMp(applyfrom.getJob());
            /* 1425 */
            change = (Math.abs((int) (current * (hpchange ? healHpRate : this.mpR))) > Math.abs(maxChange)) ? maxChange : (int) (current * (hpchange ? healHpRate : this.mpR));

        }
        /* 1427 */
        return change;

    }



    private int calcHPChange(MapleCharacter applyfrom, boolean primary) {
        /* 1431 */
        int hpchange = 0;
        /* 1432 */
        if (((Integer) this.info.get(MapleStatInfo.hp)).intValue() != 0) {
            /* 1433 */
            if (!this.skill) {
                /* 1434 */
                if (primary) {
                    /* 1435 */
                    hpchange += alchemistModifyVal(applyfrom, ((Integer) this.info.get(MapleStatInfo.hp)).intValue(), true);

                } else {
                    /* 1437 */
                    hpchange += ((Integer) this.info.get(MapleStatInfo.hp)).intValue();

                }
                /* 1439 */
                if (applyfrom.hasDisease(MapleDisease.不死化)) {
                    /* 1440 */
                    hpchange /= 2;

                }

            } else {
                /* 1443 */
                hpchange += MapleStatEffectFactory.makeHealHP(((Integer) this.info.get(MapleStatInfo.hp)).intValue() / 100.0D, applyfrom.getStat().getTotalMagic(), 3.0D, 5.0D);
                /* 1444 */
                if (applyfrom.hasDisease(MapleDisease.不死化)) {
                    /* 1445 */
                    hpchange = -hpchange;

                }

            }

        }
        /* 1449 */
        if (this.hpR != 0.0D) {
            /* 1450 */
            hpchange += getHpMpChange(applyfrom, true) / (applyfrom.hasDisease(MapleDisease.不死化) ? 2 : 1);

        }

        /* 1453 */
        if (primary) {
            /* 1454 */
            if (((Integer) this.info.get(MapleStatInfo.hpCon)).intValue() != 0) {
                /* 1455 */
                hpchange -= ((Integer) this.info.get(MapleStatInfo.hpCon)).intValue();

            }
            /* 1457 */
            if (((Integer) this.info.get(MapleStatInfo.hpRCon)).intValue() != 0) {
                /* 1458 */
                hpchange = (int) (hpchange - applyfrom.getStat().getCurrentMaxHp() * gethpRCon() / 100.0D);

            }

        }
        /* 1461 */
        return hpchange;

    }



    private int calcMPChange(MapleCharacter applyfrom, boolean primary) {
        /* 1465 */
        int mpchange = 0;
        /* 1466 */
        if (((Integer) this.info.get(MapleStatInfo.mp)).intValue() != 0) {
            /* 1467 */
            if (primary) {
                /* 1468 */
                mpchange += alchemistModifyVal(applyfrom, ((Integer) this.info.get(MapleStatInfo.mp)).intValue(), true);

            } else {
                /* 1470 */
                mpchange += ((Integer) this.info.get(MapleStatInfo.mp)).intValue();

            }

        }
        /* 1473 */
        if (this.mpR != 0.0D) {
            /* 1474 */
            mpchange += getHpMpChange(applyfrom, false);

        }
        /* 1476 */
        if (JobConstants.is恶魔猎手(applyfrom.getJob()) || JobConstants.is超能力者(applyfrom.getJob())) {
            /* 1477 */
            mpchange = 0;

        }
        /* 1479 */
        if (primary) {
            /* 1480 */
            if (((Integer) this.info.get(MapleStatInfo.mpCon)).intValue() != 0 && !JobConstants.is恶魔猎手(applyfrom.getJob()) && !JobConstants.is超能力者(applyfrom.getJob())) {
                /* 1481 */
                if (applyfrom.getBuffedValue(MapleBuffStat.终极无限) != null) {
                    /* 1482 */
                    mpchange = 0;

                } else {
                    /* 1484 */
                    int mpconMaxPercent = (getDamage() > 0 && !isSummonSkill()) ? ((applyfrom.getStat()).mpconMaxPercent * applyfrom.getStat().getCurrentMaxMp(applyfrom.getJob()) / 100) : 0;
                    /* 1485 */
                    mpchange = (int) (mpchange - (((Integer) this.info.get(MapleStatInfo.mpCon)).intValue() - ((Integer) this.info.get(MapleStatInfo.mpCon)).intValue() * (applyfrom.getStat()).mpconReduce / 100) * (applyfrom.getStat()).mpconPercent / 100.0D + mpconMaxPercent);

                }
                /* 1487 */
            } else if (((Integer) this.info.get(MapleStatInfo.forceCon)).intValue() != 0 && JobConstants.is恶魔猎手(applyfrom.getJob())) {
                /* 1488 */
                if (applyfrom.getBuffedValue(MapleBuffStat.无限精气) != null) {
                    /* 1489 */
                    mpchange = 0;

                } else {
                    /* 1491 */
                    boolean superskill = false;
                    /* 1492 */
                    if ((is恶魔呼吸() && applyfrom.getSkillLevel(31120045) > 0) || (is黑暗变形() && applyfrom.getSkillLevel(31120048) > 0) || (is恶魔冲击波() && applyfrom.getSkillLevel(31120051) > 0)) {
                        /* 1493 */
                        superskill = true;

                    }
                    /* 1495 */
                    mpchange -= ((Integer) this.info.get(MapleStatInfo.forceCon)).intValue() / (superskill ? 2 : 1);

                }
                /* 1497 */
            } else if (JobConstants.is超能力者(applyfrom.getJob()) && !is终极物质() && !is终极火车() && !is终极心魂弹()) {
                /* 1498 */
                if (((Integer) this.info.get(MapleStatInfo.ppRecovery)).intValue() != 0) {
                    /* 1499 */
                    mpchange += ((Integer) this.info.get(MapleStatInfo.ppRecovery)).intValue();
                    /* 1500 */
                } else if (((Integer) this.info.get(MapleStatInfo.ppCon)).intValue() != 0) {
                    /* 1501 */
                    mpchange -= ((Integer) this.info.get(MapleStatInfo.ppCon)).intValue();

                }

            }

        }
        /* 1505 */
        return mpchange;

    }



    public int alchemistModifyVal(MapleCharacter chr, int val, boolean withX) {
        /* 1509 */
        if (!this.skill) {
            /* 1510 */
            return val * (withX ? (chr.getStat()).RecoveryUP : (chr.getStat()).BuffUP) / 100;

        }
        /* 1512 */
        return val * (withX ? (chr.getStat()).RecoveryUP : ((chr.getStat()).BuffUP_Skill + ((getSummonMovementType() == null) ? 0 : (chr.getStat()).BuffUP_Summon))) / 100;

    }



    private int calcPowerChange(MapleCharacter applyfrom) {
        /* 1516 */
        int powerchange = 0;
        /* 1517 */
        if (!JobConstants.is尖兵(applyfrom.getJob()))
            /* 1518 */ return powerchange;
        /* 1519 */
        if (applyfrom.getBuffedValue(MapleBuffStat.永动引擎) != null) {
            /* 1520 */
            return powerchange;

        }
        /* 1522 */
        if (((Integer) this.info.get(MapleStatInfo.powerCon)).intValue() != 0) {
            /* 1523 */
            powerchange -= ((Integer) this.info.get(MapleStatInfo.powerCon)).intValue();

        }
        /* 1525 */
        return powerchange;

    }



    private int calcforceConChange(MapleCharacter applyfrom) {
        /* 1529 */
        int forceConchange = 0;
        /* 1530 */
        if (!JobConstants.is古迹猎人(applyfrom.getJob())) {
            /* 1531 */
            return forceConchange;

        }
        /* 1533 */
        if (((Integer) this.info.get(MapleStatInfo.forceCon)).intValue() != 0) {
            /* 1534 */
            forceConchange -= ((Integer) this.info.get(MapleStatInfo.forceCon)).intValue();

        }
        /* 1536 */
        return forceConchange;

    }






    private int calcatGauge1ConChange(MapleCharacter applyfrom) {
        /* 1543 */
        int atGauge1Con = 0;
        /* 1544 */
        if (!JobConstants.is虎影(applyfrom.getJob())) {
            /* 1545 */
            return atGauge1Con;

        }
        /* 1547 */
        if (((Integer) this.info.get(MapleStatInfo.atGauge1Con)).intValue() != 0) {
            /* 1548 */
            atGauge1Con -= ((Integer) this.info.get(MapleStatInfo.atGauge1Con)).intValue();

        }
        /* 1550 */
        return atGauge1Con;

    }






    private int calcatGauge2ConChange(MapleCharacter applyfrom) {
        /* 1557 */
        int atGauge2Con = 0;
        /* 1558 */
        if (!JobConstants.is虎影(applyfrom.getJob())) {
            /* 1559 */
            return atGauge2Con;

        }
        /* 1561 */
        if (((Integer) this.info.get(MapleStatInfo.atGauge2Con)).intValue() != 0) {
            /* 1562 */
            atGauge2Con -= ((Integer) this.info.get(MapleStatInfo.atGauge2Con)).intValue();

        }
        /* 1564 */
        return atGauge2Con;

    }




    public boolean isRefreshstyle() {
        /* 1569 */
        return this.refreshstyle;

    }



    public void initForeign(MapleForeignBuffStat... stat) {
        /* 1573 */
        if (!this.refreshstyle) {
            /* 1574 */
            this.refreshstyle = true;
            /* 1575 */
            this.foreign = new MapleForeignBuffSkill(this);
            /* 1576 */
            this.foreign.getStats().addAll(Arrays.asList(stat));

        }

    }



    public void setLt(Point Lt) {
        /* 1581 */
        this.lt = Lt;

    }



    public void setRb(Point Rb) {
        /* 1585 */
        this.rb = Rb;

    }



    public Skill getSkill() {
        /* 1589 */
        return SkillFactory.getSkill(this.sourceid);

    }



    public boolean isGmBuff() {
        /* 1593 */
        switch (this.sourceid) {


            case 9001000:

            case 9001001:

            case 9001002:

            case 9001003:

            case 9001005:

            case 9001008:

            case 9101000:

            case 9101001:

            case 9101002:

            case 9101003:

            case 9101005:

            case 9101008:

            case 10001075:
                /* 1608 */
                return true;

        }
        /* 1610 */
        return (JobConstants.is新手职业(this.sourceid / 10000) && this.sourceid % 10000 == 1005);

    }




    public boolean isInflation() {
        /* 1615 */
        return (this.inflation > 0);

    }



    public int getInflation() {
        /* 1619 */
        return this.inflation;

    }



    public boolean is能量获得() {
        /* 1623 */
        return (this.skill && (this.sourceid == 5100015 || this.sourceid == 5110014 || this.sourceid == 5120018));

    }



    public boolean isMonsterBuff() {
        /* 1627 */
        switch (this.sourceid) {

            case 1121016:

            case 1211013:

            case 1221014:

            case 1321014:

            case 4111003:

            case 4321002:

            case 5011002:

            case 11111023:

            case 25100002:

            case 33001025:

            case 35111008:

            case 51111005:

            case 90001002:

            case 90001003:

            case 90001004:

            case 90001005:

            case 90001006:
                /* 1645 */
                return this.skill;

        }
        /* 1647 */
        return false;

    }






    private boolean isPartyBuff() {
        /* 1654 */
        if (this.lt == null || this.rb == null || !this.partyBuff) {
            /* 1655 */
            return false;

        }
        /* 1657 */
        switch (this.sourceid) {

            case 1201011:

            case 1201012:

            case 1211008:

            case 1221004:

            case 4341002:

            case 61101002:

            case 61120007:

            case 61121009:

            case 110001500:

            case 110001501:

            case 110001502:

            case 110001503:

            case 110001504:
                /* 1671 */
                return false;

        }
        /* 1673 */
        return (!SkillConstants.isNoDelaySkill(this.sourceid) && !is超越攻击());

    }






    public boolean isPartyPassiveBuff() {
        /* 1680 */
        return (this.skill && (this.sourceid == 112120016 || this.sourceid == 112120017 || this.sourceid == 112120018 || this.sourceid == 112120021 || this.sourceid == 112120022 || this.sourceid == 112120023 || this.sourceid == 112121006 || this.sourceid == 112121013));

    }



    public boolean is狂龙战士的威严() {
        /* 1684 */
        return (this.skill && this.sourceid == 61121054);

    }



    public boolean is剑刃之壁() {
        /* 1688 */
        return (this.skill && (this.sourceid == 61101002 || this.sourceid == 61120007 || this.sourceid == 61110211 || this.sourceid == 61121217));

    }



    public int get剑刃之壁类型() {
        /* 1692 */
        switch (this.sourceid) {

            case 61101002:
                /* 1694 */
                return 1;

            case 61120007:
                /* 1696 */
                return 2;

            case 61110211:
                /* 1698 */
                return 3;

            case 61121217:
                /* 1700 */
                return 4;

        }
        /* 1702 */
        return 1;

    }



    public boolean is神圣之火() {
        /* 1706 */
        return (this.skill && this.sourceid == 1301007);

    }



    public boolean is黑暗领地() {
        /* 1710 */
        return (this.skill && this.sourceid == 14121052);

    }



    public boolean is黑暗幻影() {
        /* 1714 */
        return (this.skill && this.sourceid == 14121054);

    }



    public boolean is三彩箭矢() {
        /* 1718 */
        return (this.skill && this.sourceid == 3101009);

    }



    public boolean is永动引擎() {
        /* 1722 */
        return (this.skill && this.sourceid == 36121054);

    }



    public boolean is神秘瞄准术() {
        /* 1726 */
        return (this.skill && (this.sourceid == 2320011 || this.sourceid == 2220010 || this.sourceid == 2120010));

    }



    public boolean is群体治愈() {
        /* 1730 */
        return (this.skill && (this.sourceid == 2301002 || this.sourceid == 9101000 || this.sourceid == 9001000 || this.sourceid == 112121013));

    }



    public boolean is黑暗灵气() {
        /* 1734 */
        return (this.skill && this.sourceid == 32121017);

    }



    public boolean is黄色灵气() {
        /* 1738 */
        return (this.skill && this.sourceid == 32001016);

    }



    public boolean is蓝色灵气() {
        /* 1742 */
        return (this.skill && this.sourceid == 32111012);

    }



    public boolean is吸收灵气() {
        /* 1746 */
        return (this.skill && this.sourceid == 32101009);

    }



    public boolean is减益灵气() {
        /* 1750 */
        return (this.skill && this.sourceid == 32121018);

    }



    public boolean is黑暗闪电() {
        /* 1754 */
        return (this.skill && this.sourceid == 32111016);

    }



    public boolean is暴怒对战() {
        /* 1758 */
        return (this.skill && this.sourceid == 32121010);

    }



    public boolean is复活术() {
        /* 1762 */
        return (this.skill && (this.sourceid == 9001005 || this.sourceid == 9101005 || this.sourceid == 2321006 || this.sourceid == 112121011));

    }



    public boolean is伺机待发() {
        /* 1766 */
        return (this.skill && this.sourceid == 5121010);

    }



    public boolean is尖兵支援() {
        /* 1770 */
        return (this.skill && this.sourceid == 30020232);

    }



    public boolean is月光转换() {
        /* 1774 */
        return (this.skill && (this.sourceid == 11101022 || this.sourceid == 11111022 || this.sourceid == 11121011 || this.sourceid == 11121012));

    }



    public boolean is信天翁新() {
        /* 1778 */
        return (this.skill && (this.sourceid == 13111023 || this.sourceid == 13120008));

    }



    public boolean is圣洁之力() {
        /* 1782 */
        return (this.skill && this.sourceid == 100001263);

    }



    public boolean is神圣迅捷() {
        /* 1786 */
        return (this.skill && this.sourceid == 100001264);

    }



    public boolean is进阶祝福() {
        /* 1790 */
        return (this.skill && this.sourceid == 2321005);

    }



    public boolean is神圣魔法盾() {
        /* 1794 */
        return (this.skill && this.sourceid == 2311009);

    }



    public boolean is幸运钱() {
        /* 1798 */
        return (this.skill && this.sourceid == 4221054);

    }



    public boolean is终极斩() {
        /* 1802 */
        return (this.skill && this.sourceid == 4341002);

    }



    public int getHp() {
        /* 1806 */
        return ((Integer) this.info.get(MapleStatInfo.hp)).intValue();

    }



    public int getMp() {
        /* 1810 */
        return ((Integer) this.info.get(MapleStatInfo.mp)).intValue();

    }



    public int getMpCon() {
        /* 1814 */
        return ((Integer) this.info.get(MapleStatInfo.mpCon)).intValue();

    }



    public int getHpFX() {
        /* 1818 */
        return ((Integer) this.info.get(MapleStatInfo.hpFX)).intValue();

    }













    public int getDotInterval() {
        /* 1832 */
        return ((Integer) this.info.get(MapleStatInfo.dotInterval)).intValue();

    }









    public int getDOTStack() {
        /* 1842 */
        return ((Integer) this.info.get(MapleStatInfo.dotSuperpos)).intValue();

    }



    public double getHpR() {
        /* 1846 */
        return this.hpR;

    }



    public double getMpR() {
        /* 1850 */
        return this.mpR;

    }



    public int getMastery() {
        /* 1854 */
        return ((Integer) this.info.get(MapleStatInfo.mastery)).intValue();

    }



    public int getWatk() {
        /* 1858 */
        return ((Integer) this.info.get(MapleStatInfo.pad)).intValue();

    }



    public int getPadR() {
        /* 1862 */
        return ((Integer) this.info.get(MapleStatInfo.padR)).intValue();

    }



    public int getMatk() {
        /* 1866 */
        return ((Integer) this.info.get(MapleStatInfo.mad)).intValue();

    }



    public int getWdef() {
        /* 1870 */
        return ((Integer) this.info.get(MapleStatInfo.pdd)).intValue();

    }



    public int getWdef2Dam() {
        /* 1874 */
        return ((Integer) this.info.get(MapleStatInfo.pdd2dam)).intValue();

    }



    public int getMdef() {
        /* 1878 */
        return ((Integer) this.info.get(MapleStatInfo.mdd)).intValue();

    }








    public int getAcc() {
        /* 1887 */
        return ((Integer) this.info.get(MapleStatInfo.acc)).intValue();

    }



    public int getAcc2Dam() {
        /* 1891 */
        return ((Integer) this.info.get(MapleStatInfo.acc2dam)).intValue();

    }








    public int getAvoid() {
        /* 1900 */
        return ((Integer) this.info.get(MapleStatInfo.eva)).intValue();

    }








    public int getSpeed() {
        /* 1909 */
        return ((Integer) this.info.get(MapleStatInfo.speed)).intValue();

    }



    public int getJump() {
        /* 1913 */
        return ((Integer) this.info.get(MapleStatInfo.jump)).intValue();

    }








    public int getSpeedMax() {
        /* 1922 */
        return ((Integer) this.info.get(MapleStatInfo.speedMax)).intValue();

    }









    public int getPsdSpeed() {
        /* 1932 */
        return ((Integer) this.info.get(MapleStatInfo.psdSpeed)).intValue();

    }








    public int getPsdJump() {
        /* 1941 */
        return ((Integer) this.info.get(MapleStatInfo.psdJump)).intValue();

    }






    public int getDuration() {
        /* 1948 */
        return ((Integer) this.info.get(MapleStatInfo.time)).intValue();

    }



    public void setDuration(int d) {
        /* 1952 */
        this.info.put(MapleStatInfo.time, Integer.valueOf(d));

    }



    public int getDuration(MapleCharacter applyfrom) {
        /* 1956 */
        int time = this.skill ? applyfrom.getStat().getDuration(this.sourceid) : 0;
        /* 1957 */
        return ((Integer) this.info.get(MapleStatInfo.time)).intValue() + time;

    }






    public int getSubTime() {
        /* 1964 */
        return ((Integer) this.info.get(MapleStatInfo.subTime)).intValue();

    }






    public boolean isOverTime() {
        /* 1971 */
        return this.overTime;

    }






    public boolean isNotRemoved() {
        /* 1978 */
        return this.notRemoved;

    }






    public boolean isRepeatEffect() {
        /* 1985 */
        return this.repeatEffect;

    }



    public EnumMap<MapleBuffStat, Integer> getStatups() {
        /* 1989 */
        return this.statups;

    }






    public boolean sameSource(MapleStatEffect effect) {
        /* 1996 */
        return (effect != null && (SkillConstants.getLinkedAttackSkill(effect.sourceid) == this.sourceid || this.sourceid == effect.sourceid) && this.skill == effect.skill);

    }



    public int getOnActive() {
        /* 2000 */
        return ((Integer) this.info.get(MapleStatInfo.onActive)).intValue();

    }



    public int getQ() {
        /* 2004 */
        return ((Integer) this.info.get(MapleStatInfo.q)).intValue();

    }



    public int getQ2() {
        /* 2008 */
        return ((Integer) this.info.get(MapleStatInfo.q2)).intValue();

    }



    public int getS() {
        /* 2012 */
        return ((Integer) this.info.get(MapleStatInfo.s)).intValue();

    }



    public int getS2() {
        /* 2016 */
        return ((Integer) this.info.get(MapleStatInfo.s2)).intValue();

    }



    public int getT() {
        /* 2020 */
        return ((Integer) this.info.get(MapleStatInfo.t)).intValue();

    }



    public int getU() {
        /* 2024 */
        return ((Integer) this.info.get(MapleStatInfo.u)).intValue();

    }



    public int getU2() {
        /* 2028 */
        return ((Integer) this.info.get(MapleStatInfo.u2)).intValue();

    }



    public int getV() {
        /* 2032 */
        return ((Integer) this.info.get(MapleStatInfo.v)).intValue();

    }



    public int getW() {
        /* 2036 */
        return ((Integer) this.info.get(MapleStatInfo.w)).intValue();

    }



    public int getW2() {
        /* 2040 */
        return ((Integer) this.info.get(MapleStatInfo.w2)).intValue();

    }



    public int getX() {
        /* 2044 */
        return ((Integer) this.info.get(MapleStatInfo.x)).intValue();

    }



    public int getY() {
        /* 2048 */
        return ((Integer) this.info.get(MapleStatInfo.y)).intValue();

    }



    public int getZ() {
        /* 2052 */
        return ((Integer) this.info.get(MapleStatInfo.z)).intValue();

    }



    public int getDamage() {
        /* 2056 */
        if (this.sourceid == 33121017) {
            /* 2057 */
            return ((Integer) this.info.get(MapleStatInfo.y)).intValue();

        }
        /* 2059 */
        return ((Integer) this.info.get(MapleStatInfo.damage)).intValue();

    }



    public int getMagicDamage() {
        /* 2063 */
        return ((Integer) this.info.get(MapleStatInfo.madR)).intValue();

    }



    public int getPVPDamage() {
        /* 2067 */
        return ((Integer) this.info.get(MapleStatInfo.PVPdamage)).intValue();

    }






    public int getAttackCount() {
        /* 2074 */
        return ((Integer) this.info.get(MapleStatInfo.attackCount)).intValue();

    }






    public int getAttackCount(MapleCharacter applyfrom) {
        /* 2081 */
        int addcount = (applyfrom.getSkillLevel(3220015) > 0 && getAttackCount() >= 2) ? 1 : 0;
        /* 2082 */
        return ((Integer) this.info.get(MapleStatInfo.attackCount)).intValue() + applyfrom.getStat().getAttackCount(this.sourceid) + addcount;

    }









    public int getBulletCount() {
        /* 2092 */
        return ((Integer) this.info.get(MapleStatInfo.bulletCount)).intValue();

    }



    public int getBulletCount(MapleCharacter applyfrom) {
        /* 2096 */
        int addcount = (applyfrom.getSkillLevel(3220015) > 0 && getBulletCount() >= 2) ? 1 : 0;
        /* 2097 */
        return ((Integer) this.info.get(MapleStatInfo.bulletCount)).intValue() + applyfrom.getStat().getAttackCount(this.sourceid) + addcount;

    }






    public int getBulletConsume() {
        /* 2104 */
        return ((Integer) this.info.get(MapleStatInfo.bulletConsume)).intValue();

    }








    public int getMobCount() {
        /* 2113 */
        return ((Integer) this.info.get(MapleStatInfo.mobCount)).intValue();

    }






    public int getMobCount(MapleCharacter applyfrom) {
        /* 2120 */
        return ((Integer) this.info.get(MapleStatInfo.mobCount)).intValue() + applyfrom.getStat().getMobCount(this.sourceid);

    }



    public int getMoneyCon() {
        /* 2124 */
        return this.moneyCon;

    }








    public int getCooltimeReduceR() {
        /* 2133 */
        return ((Integer) this.info.get(MapleStatInfo.coolTimeR)).intValue();

    }






    public int getMesoAcquisition() {
        /* 2140 */
        return ((Integer) this.info.get(MapleStatInfo.mesoR)).intValue();

    }






    public int getCooldown(MapleCharacter applyfrom) {
        /* 2147 */
        return getCooldown(applyfrom, false);

    }






    public int getCooldown(MapleCharacter applyfrom, boolean cancel) {
        /* 2154 */
        if (cancel) {
            /* 2155 */
            if (is神枪降临() && (applyfrom.hasBuffSkill(1321015) || applyfrom.getBuffedValue(MapleBuffStat.重生契约) != null))
                /* 2156 */ return 0;
            /* 2157 */
            if (is一击要害箭() && applyfrom.getSkillLevel(3220051) > 0)
                /* 2158 */ return 0;
            /* 2159 */
            if (is平衡技能() && applyfrom.getBuffedIntValue(MapleBuffStat.光暗转换) == 2)
                /* 2160 */ return 0;
            /* 2161 */
            if (applyfrom.getBuffedValue(MapleBuffStat.开天辟地) != null && this.sourceid == 15111022) {
                /* 2162 */
                return 0;

            }

        }

        /* 2166 */
        Integer cooltime = this.info.get(MapleStatInfo.cooltime);
        /* 2167 */
        if (this.sourceid == 400011010) {
            /* 2168 */
            cooltime = this.info.get(MapleStatInfo.z);

        }
        /* 2170 */
        if (this.sourceid == 400011001) {
            /* 2171 */
            cooltime = this.info.get(MapleStatInfo.x);

        }
        /* 2173 */
        int linkedSkill = SkillConstants.getLinkedAttackSkill(this.sourceid);
        /* 2174 */
        if (this.sourceid != linkedSkill) {
            /* 2175 */
            cooltime = Integer.valueOf(applyfrom.getSkillEffect(linkedSkill).getCooldown(applyfrom));

        }
        /* 2177 */
        if (cooltime.intValue() >= 5) {
            /* 2178 */
            int cooldownX = (int) (cooltime.intValue() * applyfrom.getStat().getCoolTimeR() / 100.0D);
            /* 2179 */
            int coolTimeR = (int) (cooltime.intValue() * applyfrom.getStat().getReduceCooltimeRate(this.sourceid) / 100.0D);
            /* 2180 */
            if (applyfrom.isShowPacket()) {
                /* 2181 */
                applyfrom.dropMessage(-5, "技能冷却时间 => 默认: " + cooltime + " [减少百分比: " + applyfrom.getStat().getCoolTimeR() + "% - " + cooldownX + "] [减少时间: " + applyfrom.getStat().getReduceCooltime() + "] [超级技能减少百分比: " + applyfrom.getStat().getReduceCooltimeRate(this.sourceid) + "% 减少时间: " + coolTimeR + "]");

            }
            /* 2183 */
            return Math.max(0, cooltime.intValue() - applyfrom.getStat().getReduceCooltime() - ((cooldownX > 5) ? 5 : cooldownX) - coolTimeR);

        }
        /* 2185 */
        return cooltime.intValue();

    }



    public EnumMap<MonsterStatus, Integer> getMonsterStati() {
        /* 2189 */
        return this.monsterStatus;

    }



    public int getBerserk() {
        /* 2193 */
        return this.berserk;

    }



    public boolean is神枪降临() {
        /* 2197 */
        return (this.skill && this.sourceid == 1321013);

    }



    public boolean is一击要害箭() {
        /* 2201 */
        return (this.skill && this.sourceid == 3221007);

    }



    public boolean is船长爆头() {
        /* 2205 */
        return (this.skill && this.sourceid == 5221016);

    }



    public boolean is平衡技能() {
        /* 2209 */
        return (this.skill && (this.sourceid == 27111303 || this.sourceid == 27121303));

    }



    public boolean is隐藏术() {
        /* 2213 */
        return (this.skill && (this.sourceid == 9001004 || this.sourceid == 9101004));

    }



    public boolean is隐身术() {
        /* 2217 */
        return (this.skill && (this.sourceid == 9001004 || this.sourceid == 9101004 || this.sourceid == 4001003 || this.sourceid == 14001023 || this.sourceid == 4330001));

    }



    public boolean is龙之力() {
        /* 2221 */
        return (this.skill && this.sourceid == 1311008);

    }



    public boolean is龙之献祭() {
        /* 2225 */
        return (this.skill && this.sourceid == 1321015);

    }



    public boolean is元气恢复() {
        /* 2229 */
        return (this.skill && this.sourceid == 1211010);

    }



    public boolean is日月轮转() {
        /* 2233 */
        return (this.skill && this.sourceid == 11121005);

    }



    public boolean is团队治疗() {
        /* 2237 */
        return (this.skill && (this.sourceid == 1001 || this.sourceid == 10001001 || this.sourceid == 20001001 || this.sourceid == 20011001 || this.sourceid == 35121005));

    }



    public boolean is潜入() {
        /* 2241 */
        return (this.skill && (this.sourceid == 20021001 || this.sourceid == 20031001 || this.sourceid == 30001001 || this.sourceid == 30011001 || this.sourceid == 30021001 || this.sourceid == 60001001 || this.sourceid == 60011001));

    }



    public boolean is重生契约状态() {
        /* 2245 */
        return (this.skill && this.sourceid == 1320019);

    }



    public boolean is重生契约() {
        /* 2249 */
        return (this.skill && this.sourceid == 1320016);

    }



    public boolean is灵魂助力() {
        /* 2253 */
        return (this.skill && this.sourceid == 1301013);

    }



    public boolean is灵魂助力统治() {
        /* 2257 */
        return (this.skill && this.sourceid == 1311013);

    }



    public boolean is灵魂助力震惊() {
        /* 2261 */
        return (this.skill && this.sourceid == 1311014);

    }



    public boolean is刀飞炼狱() {
        /* 2265 */
        return (this.skill && this.sourceid == 4211002);

    }



    public boolean is极限射箭() {
        /* 2269 */
        return (this.skill && (this.sourceid == 3111011 || this.sourceid == 3211012));

    }



    public boolean is终极无限() {
        /* 2273 */
        return (this.skill && (this.sourceid == 2121004 || this.sourceid == 2221004 || this.sourceid == 2321004));

    }



    public boolean is猫咪模式() {
        /* 2277 */
        return (this.skill && this.sourceid == 110001504);

    }



    public boolean is模式变更() {
        /* 2281 */
        return (this.skill && (this.sourceid == 110001501 || this.sourceid == 110001502 || this.sourceid == 110001503 || this.sourceid == 110001504 || this.sourceid == 110001500));

    }



    public boolean is喵喵卡片() {
        /* 2285 */
        return (this.skill && (this.sourceid == 112121006 || this.sourceid == 112121007 || this.sourceid == 112121008 || this.sourceid == 112121009 || this.sourceid == 112121020 || this.sourceid == 112120019));

    }



    public boolean is舞力全开() {
        /* 2289 */
        return (this.skill && this.sourceid == 112121056);

    }



    public boolean is嗨兄弟() {
        /* 2293 */
        return (this.skill && this.sourceid == 112101016);

    }



    public boolean is苍空之子结晶() {
        /* 2297 */
        return (this.skill && this.sourceid == 151100002);

    }



    public boolean is贯穿箭() {
        /* 2301 */
        return (this.skill && this.sourceid == 3110001);

    }




    public boolean is骑兽技能_() {
        /* 2306 */
        return (this.skill && (SkillConstants.is骑兽技能(this.sourceid) || this.sourceid == 80001000));

    }



    public boolean is骑兽技能() {
        /* 2310 */
        return (this.skill && (is骑兽技能_() || GameConstants.getMountItem(this.sourceid, null) != 0));

    }



    public boolean is时空门() {
        /* 2314 */
        return (this.skill && (this.sourceid == 2311002 || this.sourceid % 10000 == 8001 || this.sourceid == 112111010));

    }



    public boolean is金钱护盾() {
        /* 2318 */
        return (this.skill && this.sourceid == 4201011);

    }



    public boolean is愤怒之火() {
        /* 2322 */
        return (this.skill && this.sourceid == 1101006);

    }



    public boolean is葵花宝典() {
        /* 2326 */
        return (this.skill && this.sourceid == 1121010);

    }



    public boolean is弓手火眼晶晶() {
        /* 2330 */
        return (this.skill && this.sourceid == 3121002);

    }



    public boolean is符文状态() {
        /* 2334 */
        return (this.skill && (this.sourceid == 80001427 || this.sourceid == 80001428 || this.sourceid == 80001430 || this.sourceid == 80001432));

    }



    public boolean is金钱炸弹() {
        /* 2338 */
        return (this.skill && this.sourceid == 4211006);

    }



    public boolean is机械传送门() {
        /* 2342 */
        return (this.skill && this.sourceid == 35101005);

    }



    public boolean is火焰咆哮() {
        /* 2346 */
        return (this.skill && this.sourceid == 23111004);

    }



    public boolean is影子闪避() {
        /* 2350 */
        return (this.skill && this.sourceid == 4330009);

    }



    public boolean is卡牌审判() {
        /* 2354 */
        return (this.skill && (this.sourceid == 20031209 || this.sourceid == 20031210));

    }



    public boolean is黑暗祝福() {
        /* 2358 */
        return (this.skill && this.sourceid == 27100003);

    }



    public boolean is黑暗高潮() {
        /* 2362 */
        return (this.skill && this.sourceid == 27121005);

    }



    public boolean is夜光平衡() {
        /* 2366 */
        return (this.skill && (this.sourceid == 20040219 || this.sourceid == 20040220));

    }



    public boolean is绝对死亡() {
        /* 2370 */
        return (this.skill && this.sourceid == 27121303);

    }



    public boolean is恶魔呼吸() {
        /* 2374 */
        return (this.skill && this.sourceid == 31111005);

    }



    public boolean is黑暗变形() {
        /* 2378 */
        return (this.skill && this.sourceid == 31121005);

    }



    public boolean is恶魔冲击波() {
        /* 2382 */
        return (this.skill && this.sourceid == 31121001);

    }



    public boolean is激素引擎() {
        /* 2386 */
        return (this.skill && this.sourceid == 21121058);

    }



    public boolean is攻势之盾() {
        /* 2390 */
        return ((this.skill && this.sourceid == 400001010) || this.sourceid == 400001011);

    }



    public boolean isCharge() {
        /* 2394 */
        switch (this.sourceid) {

            case 1211008:

            case 21101006:
                /* 2397 */
                return this.skill;

        }
        /* 2399 */
        return false;

    }



    public boolean isPoison() {
        /* 2403 */
        return (((Integer) this.info.get(MapleStatInfo.dot)).intValue() > 0 && ((Integer) this.info.get(MapleStatInfo.dotTime)).intValue() > 0);

    }






    private boolean isMist() {
        /* 2410 */
        switch (this.sourceid) {


            case 1076:

            case 2111003:

            case 2201009:

            case 2311011:

            case 4121015:

            case 4221006:

            case 12121005:

            case 25111206:

            case 32121006:

            case 33111013:

            case 33121016:

            case 35111008:

            case 35120002:

            case 42101005:

            case 42111004:

            case 42121005:

            case 42121054:

            case 112001006:

            case 112121005:

            case 400001017:

            case 400010010:

            case 400020002:

            case 400021030:

            case 400021031:

            case 400021041:

            case 400021049:

            case 400021050:

            case 400041041:

            case 400051025:

            case 400051026:
                /* 2442 */
                return true;

        }
        /* 2444 */
        return false;

    }



    private boolean is暗器伤人() {
        /* 2448 */
        return (this.skill && (this.sourceid == 4111009 || this.sourceid == 14111025));

    }



    private boolean is无限子弹() {
        /* 2452 */
        return (this.skill && this.sourceid == 5201008);

    }



    private boolean is神速衔接() {
        /* 2456 */
        return (this.skill && this.sourceid == 5221021);

    }



    private boolean is净化() {
        /* 2460 */
        return (this.skill && (this.sourceid == 2311001 || this.sourceid == 9001000 || this.sourceid == 9101000));

    }



    private boolean is勇士的意志() {
        /* 2464 */
        switch (this.sourceid) {

            case 1121011:

            case 1221012:

            case 1321010:

            case 2121008:

            case 2221008:

            case 2321009:

            case 3121009:

            case 3221008:

            case 4121009:

            case 4221008:

            case 4341008:

            case 5121008:

            case 5221010:

            case 5321006:

            case 21121008:

            case 22171069:

            case 23121008:

            case 24121009:

            case 27121010:

            case 32121008:

            case 33121008:

            case 35121008:

            case 36121009:

            case 37121007:

            case 41121004:

            case 42121007:

            case 61121015:

            case 65121010:

            case 110001512:

            case 142121007:
                /* 2495 */
                return this.skill;

        }
        /* 2497 */
        return false;

    }



    public boolean is矛连击强化() {
        /* 2501 */
        return (this.skill && this.sourceid == 21000000);

    }



    public boolean is侠盗本能() {
        /* 2505 */
        return (this.skill && this.sourceid == 4221013);

    }



    public boolean is提速时刻() {
        /* 2509 */
        return (this.skill && (this.sourceid == 100000276 || this.sourceid == 100000277));

    }



    public boolean is斗气集中() {
        /* 2513 */
        switch (this.sourceid) {

            case 1101013:
                /* 2515 */
                return this.skill;

        }
        /* 2517 */
        return false;

    }



    public boolean isMorph() {
        /* 2521 */
        return (this.morphId > 0);

    }



    public int getMorph() {
        /* 2525 */
        return this.morphId;

    }



    public boolean is元素冲击() {
        /* 2529 */
        return (this.skill && (this.sourceid == 1200014 || this.sourceid == 1220010));

    }



    public boolean is狂龙变形() {
        /* 2533 */
        return (this.skill && (this.sourceid == 61111008 || this.sourceid == 61120008));

    }



    public boolean is狂龙超级变形() {
        /* 2537 */
        return (this.skill && this.sourceid == 61121053);

    }



    public boolean is负荷释放() {
        /* 2541 */
        return (this.skill && this.sourceid == 31011001);

    }



    public boolean is恶魔恢复() {
        /* 2545 */
        return (this.skill && this.sourceid == 31211004);

    }



    public boolean is血之契约() {
        /* 2549 */
        return (this.skill && this.sourceid == 30010242);

    }



    public boolean is超越攻击() {
        /* 2553 */
        return (this.skill && SkillConstants.is超越攻击(this.sourceid));

    }



    public boolean is超越攻击状态() {
        /* 2557 */
        switch (this.sourceid) {

            case 31011000:

            case 31201000:

            case 31211000:

            case 31221000:
                /* 2562 */
                return this.skill;

        }
        /* 2564 */
        return false;

    }



    public boolean is额外供给() {
        /* 2568 */
        return (this.skill && this.sourceid == 36111008);

    }



    public boolean is金刚霸体() {
        /* 2572 */
        return (this.skill && JobConstants.is新手职业(this.sourceid / 10000) && this.sourceid % 10000 == 1010);

    }



    public boolean is祝福护甲() {
        /* 2576 */
        switch (this.sourceid) {

            case 1210016:
                /* 2578 */
                return this.skill;

        }
        /* 2580 */
        return false;

    }



    public boolean is狂暴战魂() {
        /* 2584 */
        return (this.skill && JobConstants.is新手职业(this.sourceid / 10000) && this.sourceid % 10000 == 1011);

    }



    public boolean is美洲豹骑士() {
        /* 2588 */
        return (this.skill && this.sourceid == 33001001);

    }



    public int getMorph(MapleCharacter chr) {
        /* 2592 */
        int morph = getMorph();
        /* 2593 */
        switch (morph) {

            case 1000:

            case 1001:

            case 1003:
                /* 2597 */
                return morph + ((chr.getGender() == 1) ? 100 : 0);

        }
        /* 2599 */
        return morph;

    }



    public byte getLevel() {
        /* 2603 */
        return this.level;

    }



    public boolean isSummonSkill() {
        /* 2607 */
        Skill summon = SkillFactory.getSkill(this.sourceid);
        /* 2608 */
        return (this.skill && summon != null && summon.isSummonSkill());

    }



    public SummonMovementType getSummonMovementType() {
        /* 2612 */
        if (!this.skill) {
            /* 2613 */
            return null;

        }

        /* 2616 */
        if (is戒指技能()) {
            /* 2617 */
            return SummonMovementType.飞行跟随;

        }
        /* 2619 */
        switch (this.sourceid) {

            case 3221014:

            case 4111007:

            case 4211007:

            case 4341006:

            case 5211014:

            case 5221022:

            case 5320011:

            case 5321003:

            case 5321004:

            case 5321052:

            case 5711001:

            case 12111022:

            case 13111024:

            case 13120007:

            case 14111010:

            case 14121003:

            case 22171052:

            case 22171081:

            case 33101008:

            case 33111003:

            case 35101012:

            case 35111002:

            case 35111005:

            case 35111008:

            case 35120002:

            case 35121003:

            case 35121009:

            case 35121010:

            case 36121002:

            case 36121013:

            case 36121014:

            case 42001100:

            case 42100000:

            case 42100010:

            case 42110000:

            case 42111003:

            case 42120001:

            case 61111002:

            case 61111220:

            case 80011261:

            case 112001007:

            case 131001019:

            case 131001307:

            case 151100002:

            case 151111001:

            case 164121008:

            case 400001019:

            case 400001032:

            case 400001033:

            case 400001034:

            case 400001035:

            case 400011002:

            case 400011065:

            case 400011104:

            case 400021005:

            case 400021047:

            case 400021054:

            case 400021067:

            case 400021071:

            case 400041038:

            case 400041044:

            case 400041050:

            case 400051011:

            case 400051014:

            case 400051017:

            case 400051022:
                /* 2686 */
                return SummonMovementType.不会移动;

            case 1301013:

            case 3111005:

            case 3211005:

            case 3311009:

            case 14000027:

            case 23111008:

            case 23111009:

            case 23111010:

            case 33101011:

            case 42111101:

            case 42111102:

            case 112110005:

            case 131002015:

            case 164111007:
                /* 2701 */
                return SummonMovementType.跟随并且随机移动打怪;


            case 2111010:

            case 2211011:

            case 32111006:

            case 35121011:

            case 112101016:
                /* 2708 */
                return SummonMovementType.自由移动;

            case 2121005:

            case 2221005:

            case 2321003:

            case 12000022:

            case 12001004:

            case 12100026:

            case 12110024:

            case 12111004:

            case 12120007:

            case 14001005:

            case 30011090:

            case 32001014:

            case 32100010:

            case 32110017:

            case 32120019:

            case 35111001:

            case 35111009:

            case 35111010:

            case 152001003:

            case 152121005:

            case 400001012:

            case 400001013:

            case 400001016:

            case 400011001:

            case 400011006:

            case 400011077:

            case 400011078:

            case 400011090:

            case 400021018:

            case 400021032:

            case 400051009:

            case 400051028:

            case 400051029:

            case 400051030:

            case 400051031:

            case 400051032:

            case 400051046:
                /* 2746 */
                return SummonMovementType.飞行跟随;

            case 5210015:

            case 5210016:

            case 5210017:

            case 5210018:

            case 12120013:

            case 12120014:

            case 400011057:
                /* 2754 */
                return SummonMovementType.左右跟随;

            case 14111024:

            case 14121055:

            case 14121056:

            case 400011005:

            case 400031007:

            case 400031008:

            case 400031009:
                /* 2762 */
                return SummonMovementType.侍从;

            case 33001007:

            case 33001008:

            case 33001009:

            case 33001010:

            case 33001011:

            case 33001012:

            case 33001013:

            case 33001014:

            case 33001015:
                /* 2772 */
                return SummonMovementType.坐骑跟随;

            case 400051023:
                /* 2774 */
                return SummonMovementType.固定一段距离;

            case 101100100:

            case 101100101:

            case 400011012:

            case 400011013:

            case 400011014:
                /* 2780 */
                return SummonMovementType.移动一定距离;

            case 400011088:

            case 400021069:

            case 400041028:
                /* 2784 */
                return SummonMovementType.固定跟随攻击;

            case 400051038:

            case 400051052:

            case 400051053:
                /* 2788 */
                return SummonMovementType.猴子护卫队;

        }
        /* 2790 */
        return null;

    }



    public boolean is集合船员() {
        /* 2794 */
        switch (this.sourceid) {

            case 5210015:

            case 5210016:

            case 5210017:

            case 5210018:
                /* 2799 */
                return this.skill;

        }
        /* 2801 */
        return false;

    }



    public boolean is元素火焰() {
        /* 2805 */
        switch (this.sourceid) {

            case 12000022:

            case 12100026:

            case 12110024:

            case 12120007:
                /* 2810 */
                return this.skill;

        }
        /* 2812 */
        return false;

    }



    public boolean is炎虎飚() {
        /* 2816 */
        switch (this.sourceid) {

            case 400051028:

            case 400051029:

            case 400051030:

            case 400051031:

            case 400051032:
                /* 2822 */
                return this.skill;

        }
        /* 2824 */
        return false;

    }



    public boolean is船员统帅() {
        /* 2828 */
        return (this.skill && this.sourceid == 5220019);

    }



    public boolean is燃烧领域() {
        /* 2832 */
        return (this.skill && this.sourceid == 12121005);

    }



    public boolean is全息力场支援() {
        /* 2836 */
        return (this.skill && this.sourceid == 36121014);

    }



    public boolean is戒指技能() {
        /* 2840 */
        return SkillConstants.is召唤兽戒指(this.sourceid);

    }



    public boolean isSkill() {
        /* 2844 */
        return this.skill;

    }



    public int getSourceid() {
        /* 2848 */
        return this.sourceid;

    }




    public boolean is冰骑士() {
        /* 2853 */
        return (this.skill && JobConstants.is新手职业(this.sourceid / 10000) && this.sourceid % 10000 == 1105);

    }



    public boolean isSoaring() {
        /* 2857 */
        return (isSoaring_Normal() || isSoaring_Mount());

    }




    public boolean isSoaring_Normal() {
        /* 2862 */
        return (this.skill && JobConstants.is新手职业(this.sourceid / 10000) && this.sourceid % 10000 == 1026);

    }




    public boolean isSoaring_Mount() {
        /* 2867 */
        return (this.skill && ((JobConstants.is新手职业(this.sourceid / 10000) && this.sourceid % 10000 == 1142) || this.sourceid == 80001089));

    }






    public boolean is高空飞行() {
        /* 2874 */
        return (this.skill && (this.sourceid == 80001242 || this.sourceid == 30021237 || this.sourceid == 112111000 || this.sourceid == 142111010 || this.sourceid == 22171080));

    }



    public boolean is迷雾爆发() {
        /* 2878 */
        return (this.skill && this.sourceid == 2121003);

    }



    public boolean is能量激发() {
        /* 2882 */
        return (this.skill && this.sourceid == 5121054);

    }



    public boolean is寒冰灵气() {
        /* 2886 */
        return (this.skill && this.sourceid == 2221054);

    }



    public boolean is影分身() {
        /* 2890 */
        switch (this.sourceid) {

            case 4111002:

            case 4211008:

            case 4331002:

            case 14111024:

            case 36111006:
                /* 2896 */
                return this.skill;

        }
        /* 2898 */
        return false;

    }



    public double makeRate(int rate) {
        /* 2902 */
        return rate / 100.0D;

    }






    public int getShadowDamage() {
        /* 2909 */
        switch (this.sourceid) {

            case 4111002:

            case 4211008:

            case 4331002:
                /* 2913 */
                return ((Integer) this.info.get(MapleStatInfo.x)).intValue();

            case 36111006:
                /* 2915 */
                return ((Integer) this.info.get(MapleStatInfo.y)).intValue();

        }
        /* 2917 */
        return ((Integer) this.info.get(MapleStatInfo.x)).intValue();

    }



    private boolean is全息投影() {
        /* 2921 */
        return (this.skill && this.sourceid == 36111006);

    }



    private boolean is影子侍从() {
        /* 2925 */
        return (this.skill && this.sourceid == 14111024);

    }



    private boolean is伤害置换() {
        /* 2929 */
        return (this.skill && this.sourceid == 3210013);

    }



    public boolean is天使物品() {
        /* 2933 */
        return (!this.skill && (this.sourceid == 2022746 || this.sourceid == 2022747 || this.sourceid == 2022823));

    }



    public boolean is天使戒指() {
        /* 2937 */
        return (this.skill && (this.sourceid == 1087 || this.sourceid == 1179 || this.sourceid == 1085 || this.sourceid == 80001154));

    }



    private boolean is极速领域() {
        /* 2941 */
        return (this.skill && (this.sourceid == 5121009 || this.sourceid == 15121005 || this.sourceid % 10000 == 8006));

    }



    private boolean is疾驰() {
        /* 2945 */
        return (this.skill && this.sourceid == 5001005);

    }



    private boolean is属性攻击() {
        /* 2949 */
        switch (this.sourceid) {

            case 1201011:

            case 1201012:

            case 1211008:

            case 1221004:

            case 21101006:
                /* 2955 */
                return true;

        }
        /* 2957 */
        return false;

    }



    private boolean is导航辅助() {
        /* 2961 */
        switch (this.sourceid) {

            case 5221015:
                /* 2963 */
                return true;

        }
        /* 2965 */
        return false;

    }



    public boolean is传说冒险家() {
        /* 2969 */
        switch (this.sourceid) {

            case 1121053:

            case 1221053:

            case 1321053:

            case 2121053:

            case 2221053:

            case 2321053:

            case 3121053:

            case 3221053:

            case 4121053:

            case 4221053:

            case 4341053:

            case 5121053:

            case 5221053:

            case 5321053:
                /* 2984 */
                return true;

        }
        /* 2986 */
        return false;

    }



    public boolean is守护者之荣誉() {
        /* 2990 */
        switch (this.sourceid) {

            case 11121053:

            case 12121053:

            case 13121053:

            case 14121053:

            case 15121053:
                /* 2996 */
                return true;

        }
        /* 2998 */
        return false;

    }



    public boolean is英雄奥斯() {
        /* 3002 */
        switch (this.sourceid) {

            case 21121053:

            case 22171082:

            case 23121053:

            case 24121053:

            case 25121132:

            case 27121053:
                /* 3009 */
                return true;

        }
        /* 3011 */
        return false;

    }



    public boolean is自由之墙() {
        /* 3015 */
        switch (this.sourceid) {

            case 31121053:

            case 31221053:

            case 32121053:

            case 33121053:

            case 35121053:

            case 37121053:
                /* 3022 */
                return true;

        }
        /* 3024 */
        return false;

    }



    public boolean is姬儿的加持() {
        /* 3028 */
        switch (this.sourceid) {

            case 41121053:
                /* 3030 */
                return true;

        }
        /* 3032 */
        return false;

    }



    public boolean is明日祝福() {
        /* 3036 */
        switch (this.sourceid) {

            case 51121053:
                /* 3038 */
                return true;

        }
        /* 3040 */
        return false;

    }



    public boolean is金属机甲() {
        /* 3044 */
        return (this.skill && (this.sourceid == 35001002 || this.sourceid == 35111003));

    }



    public boolean is召唤美洲豹() {
        /* 3048 */
        return (this.skill && SkillConstants.is美洲豹(this.sourceid));

    }



    private boolean is美洲豹技能() {
        /* 3052 */
        switch (this.sourceid) {

            case 33001016:

            case 33001025:

            case 33101115:

            case 33111015:

            case 33121017:

            case 33121255:
                /* 3059 */
                return true;

        }
        /* 3061 */
        return false;

    }




    private boolean is死亡契约() {
        /* 3066 */
        switch (this.sourceid) {

            case 32001014:

            case 32100010:

            case 32110017:

            case 32120019:
                /* 3071 */
                return true;

        }
        /* 3073 */
        return false;

    }



    public boolean is战法灵气() {
        /* 3077 */
        switch (this.sourceid) {

            case 32001016:

            case 32101009:

            case 32111012:

            case 32121017:

            case 32121018:
                /* 3083 */
                return true;

        }
        /* 3085 */
        return false;

    }



    public boolean is狂风肆虐() {
        /* 3089 */
        switch (this.sourceid) {

            case 13101022:

            case 13110022:

            case 13120003:
                /* 3093 */
                return true;

        }
        /* 3095 */
        return false;

    }



    public boolean is影朋小白() {
        /* 3099 */
        return (this.skill && this.sourceid == 42101002);

    }



    public boolean is拔刀姿势() {
        /* 3103 */
        return (this.skill && this.sourceid == 40011288);

    }



    public boolean is避柳() {
        /* 3107 */
        return (this.skill && this.sourceid == 41110006);

    }



    public boolean is灵狐() {
        /* 3111 */
        return (this.skill && this.sourceid == 25101009);

    }



    public boolean is终极物质() {
        /* 3115 */
        return (this.skill && this.sourceid == 142001002);

    }



    public boolean is终极火车() {
        /* 3119 */
        return (this.skill && this.sourceid == 142111007);

    }



    public boolean is终极心魂弹() {
        /* 3123 */
        return (this.skill && this.sourceid == 142120002);

    }



    public boolean is终极BPM() {
        /* 3127 */
        return (this.skill && this.sourceid == 142121005);

    }



    public boolean is心魂本能() {
        /* 3131 */
        return (this.skill && this.sourceid == 142001007);

    }



    public boolean is心魂吸收() {
        /* 3135 */
        return (this.skill && this.sourceid == 142101009);

    }



    public boolean is心魂充能() {
        /* 3139 */
        return (this.skill && this.sourceid == 142121008);

    }



    public boolean is刺客标记() {
        /* 3143 */
        return (this.skill && this.sourceid == 4101011);

    }



    public boolean is钢铁之躯() {
        /* 3147 */
        return (this.skill && this.sourceid == 400011066);

    }



    public boolean is诺巴守卫() {
        /* 3151 */
        switch (this.sourceid) {

            case 400011012:

            case 400011013:

            case 400011014:
                /* 3155 */
                return this.skill;

        }
        /* 3157 */
        return false;

    }



    public boolean is晓之阵集结() {
        /* 3161 */
        switch (this.sourceid) {

            case 400001031:

            case 400001032:

            case 400001033:

            case 400001034:

            case 400001035:
                /* 3167 */
                return this.skill;

        }
        /* 3169 */
        return false;

    }








    public boolean makeChanceResult() {
        /* 3178 */
        return (((Integer) this.info.get(MapleStatInfo.prop)).intValue() >= 100 || Randomizer.nextInt(100) < ((Integer) this.info.get(MapleStatInfo.prop)).intValue());

    }



    public boolean makeChanceResult(MapleCharacter chr) {
        /* 3182 */
        int n2 = ((Integer) this.info.get(MapleStatInfo.prop)).intValue() + chr.getStat().getAddSkillProp(this.sourceid);
        /* 3183 */
        return (n2 >= 100 || Randomizer.nextInt(100) < n2);

    }








    public int getProp() {
        /* 3192 */
        return ((Integer) this.info.get(MapleStatInfo.prop)).intValue();

    }








    public int getSubProp() {
        /* 3201 */
        return ((Integer) this.info.get(MapleStatInfo.subProp)).intValue();

    }



    public int getStanceProp() {
        /* 3205 */
        return ((Integer) this.info.get(MapleStatInfo.stanceProp)).intValue();

    }






    public short getIgnoreMob() {
        /* 3212 */
        return this.ignoreMob;

    }






    public int getEnhancedHP() {
        /* 3219 */
        return ((Integer) this.info.get(MapleStatInfo.emhp)).intValue();

    }






    public int getEnhancedMP() {
        /* 3226 */
        return ((Integer) this.info.get(MapleStatInfo.emmp)).intValue();

    }






    public int getEnhancedWatk() {
        /* 3233 */
        return ((Integer) this.info.get(MapleStatInfo.epad)).intValue();

    }






    public int getEnhancedMatk() {
        /* 3240 */
        return ((Integer) this.info.get(MapleStatInfo.emad)).intValue();

    }






    public int getEnhancedWdef() {
        /* 3247 */
        return ((Integer) this.info.get(MapleStatInfo.pdd)).intValue();

    }






    public int getEnhancedMdef() {
        /* 3254 */
        return ((Integer) this.info.get(MapleStatInfo.emdd)).intValue();

    }









    public int getDOT() {
        /* 3264 */
        return ((Integer) this.info.get(MapleStatInfo.dot)).intValue();

    }









    public int getDOTTime() {
        /* 3274 */
        return ((Integer) this.info.get(MapleStatInfo.dotTime)).intValue();

    }






    public int getCritical() {
        /* 3281 */
        return ((Integer) this.info.get(MapleStatInfo.cr)).intValue();

    }






    public int getCriticalMax() {
        /* 3288 */
        return ((Integer) this.info.get(MapleStatInfo.criticaldamageMax)).intValue();

    }






    public int getCriticalMin() {
        /* 3295 */
        return ((Integer) this.info.get(MapleStatInfo.criticaldamageMin)).intValue();

    }






    public int getArRate() {
        /* 3302 */
        return ((Integer) this.info.get(MapleStatInfo.ar)).intValue();

    }



    public int getASRRate() {
        /* 3306 */
        return ((Integer) this.info.get(MapleStatInfo.asrR)).intValue();

    }



    public int getTERRate() {
        /* 3310 */
        return ((Integer) this.info.get(MapleStatInfo.terR)).intValue();

    }






    public int getDAMRate() {
        /* 3317 */
        return ((Integer) this.info.get(MapleStatInfo.damR)).intValue();

    }



    public int getDAMRate5th() {
        /* 3321 */
        return ((Integer) this.info.get(MapleStatInfo.damR_5th)).intValue();

    }






    public int getMdRate() {
        /* 3328 */
        return ((Integer) this.info.get(MapleStatInfo.mdR)).intValue();

    }






    public int getPercentDamageRate() {
        /* 3335 */
        return ((Integer) this.info.get(MapleStatInfo.pdR)).intValue();

    }






    public short getMesoRate() {
        /* 3342 */
        return this.mesoR;

    }



    public int getEXP() {
        /* 3346 */
        return this.exp;

    }






    public int getWdefToMdef() {
        /* 3353 */
        return ((Integer) this.info.get(MapleStatInfo.pdd2mdd)).intValue();

    }






    public int getMdefToWdef() {
        /* 3360 */
        return ((Integer) this.info.get(MapleStatInfo.mdd2pdd)).intValue();

    }






    public int getAvoidToHp() {
        /* 3367 */
        return ((Integer) this.info.get(MapleStatInfo.eva2hp)).intValue();

    }






    public int getAccToMp() {
        /* 3374 */
        return ((Integer) this.info.get(MapleStatInfo.acc2mp)).intValue();

    }






    public int getStrToDex() {
        /* 3381 */
        return ((Integer) this.info.get(MapleStatInfo.str2dex)).intValue();

    }






    public int getDexToStr() {
        /* 3388 */
        return ((Integer) this.info.get(MapleStatInfo.dex2str)).intValue();

    }






    public int getIntToLuk() {
        /* 3395 */
        return ((Integer) this.info.get(MapleStatInfo.int2luk)).intValue();

    }






    public int getLukToDex() {
        /* 3402 */
        return ((Integer) this.info.get(MapleStatInfo.luk2dex)).intValue();

    }






    public int getHpToDamageX() {
        /* 3409 */
        return ((Integer) this.info.get(MapleStatInfo.mhp2damX)).intValue();

    }






    public int getMpToDamageX() {
        /* 3416 */
        return ((Integer) this.info.get(MapleStatInfo.mmp2damX)).intValue();

    }






    public int getLevelToMaxHp() {
        /* 3423 */
        return ((Integer) this.info.get(MapleStatInfo.lv2mhp)).intValue();

    }






    public int getLevelToMaxMp() {
        /* 3430 */
        return ((Integer) this.info.get(MapleStatInfo.lv2mmp)).intValue();

    }






    public int getLevelToDamageX() {
        /* 3437 */
        return ((Integer) this.info.get(MapleStatInfo.lv2damX)).intValue();

    }






    public int getLevelToWatk() {
        /* 3444 */
        return ((Integer) this.info.get(MapleStatInfo.lv2pad)).intValue();

    }






    public int getLevelToMatk() {
        /* 3451 */
        return ((Integer) this.info.get(MapleStatInfo.lv2mad)).intValue();

    }






    public int getLevelToWatkX() {
        /* 3458 */
        return ((Integer) this.info.get(MapleStatInfo.lv2pdX)).intValue();

    }






    public int getLevelToMatkX() {
        /* 3465 */
        return ((Integer) this.info.get(MapleStatInfo.lv2mdX)).intValue();

    }








    public int getEXPLossRate() {
        /* 3474 */
        return ((Integer) this.info.get(MapleStatInfo.expLossReduceR)).intValue();

    }








    public int getBuffTimeRate() {
        /* 3483 */
        return ((Integer) this.info.get(MapleStatInfo.bufftimeR)).intValue();

    }



    public int getSuddenDeathR() {
        /* 3487 */
        return ((Integer) this.info.get(MapleStatInfo.suddenDeathR)).intValue();

    }








    public int getSummonTimeInc() {
        /* 3496 */
        return ((Integer) this.info.get(MapleStatInfo.summonTimeR)).intValue();

    }








    public int getMPConsumeEff() {
        /* 3505 */
        return ((Integer) this.info.get(MapleStatInfo.mpConEff)).intValue();

    }






    public int getAttackX() {
        /* 3512 */
        return ((Integer) this.info.get(MapleStatInfo.padX)).intValue();

    }






    public int getPadX() {
        /* 3519 */
        return ((Integer) this.info.get(MapleStatInfo.padX)).intValue();

    }






    public int getMagicX() {
        /* 3526 */
        return ((Integer) this.info.get(MapleStatInfo.madX)).intValue();

    }






    public int getPercentHP() {
        /* 3533 */
        return ((Integer) this.info.get(MapleStatInfo.mhpR)).intValue();

    }






    public int getPercentMP() {
        /* 3540 */
        return ((Integer) this.info.get(MapleStatInfo.mmpR)).intValue();

    }






    public int getIgnoreMobDamR() {
        /* 3547 */
        return ((Integer) this.info.get(MapleStatInfo.ignoreMobDamR)).intValue();

    }






    public int getIgnoreMobpdpR() {
        /* 3554 */
        return ((Integer) this.info.get(MapleStatInfo.ignoreMobpdpR)).intValue();

    }






    public int getIndieIgnoreMobpdpR() {
        /* 3561 */
        return ((Integer) this.info.get(MapleStatInfo.indieIgnoreMobpdpR)).intValue();

    }






    public int getDamAbsorbShieldR() {
        /* 3568 */
        return ((Integer) this.info.get(MapleStatInfo.damAbsorbShieldR)).intValue();

    }



    public int getConsume() {
        /* 3572 */
        return this.consumeOnPickup;

    }








    public int getSelfDestruction() {
        /* 3581 */
        return ((Integer) this.info.get(MapleStatInfo.selfDestruction)).intValue();

    }



    public int getGauge() {
        /* 3585 */
        return ((Integer) this.info.get(MapleStatInfo.gauge)).intValue();

    }



    public int getCharColor() {
        /* 3589 */
        return this.charColor;

    }



    public List<Integer> getPetsCanConsume() {
        /* 3593 */
        return this.petsCanConsume;

    }



    public boolean isReturnScroll() {
        /* 3597 */
        return (this.skill && (this.sourceid == 20031203 || this.sourceid == 80001040 || this.sourceid == 20021110));

    }






    public int getRange() {
        /* 3604 */
        return ((Integer) this.info.get(MapleStatInfo.range)).intValue();

    }






    public int getER() {
        /* 3611 */
        return ((Integer) this.info.get(MapleStatInfo.er)).intValue();

    }



    public int getPrice() {
        /* 3615 */
        return ((Integer) this.info.get(MapleStatInfo.price)).intValue();

    }



    public int getExtendPrice() {
        /* 3619 */
        return ((Integer) this.info.get(MapleStatInfo.extendPrice)).intValue();

    }



    public int getPeriod() {
        /* 3623 */
        return ((Integer) this.info.get(MapleStatInfo.period)).intValue();

    }



    public int getReqGuildLevel() {
        /* 3627 */
        return ((Integer) this.info.get(MapleStatInfo.reqGuildLevel)).intValue();

    }



    public byte getEXPRate() {
        /* 3631 */
        return this.expR;

    }



    public short getLifeID() {
        /* 3635 */
        return this.lifeId;

    }



    public short getUseLevel() {
        /* 3639 */
        return this.useLevel;

    }






    public byte getSlotCount() {
        /* 3646 */
        return this.slotCount;

    }



    public byte getSlotPerLine() {
        /* 3650 */
        return this.slotPerLine;

    }






    public int getStr() {
        /* 3657 */
        return ((Integer) this.info.get(MapleStatInfo.str)).intValue();

    }



    public int getStrX() {
        /* 3661 */
        return ((Integer) this.info.get(MapleStatInfo.strX)).intValue();

    }



    public int getStrFX() {
        /* 3665 */
        return ((Integer) this.info.get(MapleStatInfo.strFX)).intValue();

    }



    public int getStrRate() {
        /* 3669 */
        return ((Integer) this.info.get(MapleStatInfo.strR)).intValue();

    }






    public int getDex() {
        /* 3676 */
        return ((Integer) this.info.get(MapleStatInfo.dex)).intValue();

    }



    public int getDexX() {
        /* 3680 */
        return ((Integer) this.info.get(MapleStatInfo.dexX)).intValue();

    }



    public int getDexFX() {
        /* 3684 */
        return ((Integer) this.info.get(MapleStatInfo.dexFX)).intValue();

    }



    public int getDexRate() {
        /* 3688 */
        return ((Integer) this.info.get(MapleStatInfo.dexR)).intValue();

    }






    public int getInt() {
        /* 3695 */
        return ((Integer) this.info.get(MapleStatInfo.int_)).intValue();

    }



    public int getIntX() {
        /* 3699 */
        return ((Integer) this.info.get(MapleStatInfo.intX)).intValue();

    }



    public int getIntFX() {
        /* 3703 */
        return ((Integer) this.info.get(MapleStatInfo.intFX)).intValue();

    }



    public int getIntRate() {
        /* 3707 */
        return ((Integer) this.info.get(MapleStatInfo.intR)).intValue();

    }






    public int getLuk() {
        /* 3714 */
        return ((Integer) this.info.get(MapleStatInfo.luk)).intValue();

    }



    public int getLukX() {
        /* 3718 */
        return ((Integer) this.info.get(MapleStatInfo.lukX)).intValue();

    }



    public int getLukFX() {
        /* 3722 */
        return ((Integer) this.info.get(MapleStatInfo.lukFX)).intValue();

    }



    public int getLukRate() {
        /* 3726 */
        return ((Integer) this.info.get(MapleStatInfo.lukR)).intValue();

    }






    public int getMaxHpX() {
        /* 3733 */
        return ((Integer) this.info.get(MapleStatInfo.mhpX)).intValue();

    }






    public int getMaxMpX() {
        /* 3740 */
        return ((Integer) this.info.get(MapleStatInfo.mmpX)).intValue();

    }






    public int getAccX() {
        /* 3747 */
        return ((Integer) this.info.get(MapleStatInfo.accX)).intValue();

    }






    public int getPercentAcc() {
        /* 3754 */
        return ((Integer) this.info.get(MapleStatInfo.accR)).intValue();

    }






    public int getAvoidX() {
        /* 3761 */
        return ((Integer) this.info.get(MapleStatInfo.evaX)).intValue();

    }






    public int getPercentAvoid() {
        /* 3768 */
        return ((Integer) this.info.get(MapleStatInfo.evaR)).intValue();

    }






    public int getWdefX() {
        /* 3775 */
        return ((Integer) this.info.get(MapleStatInfo.pddX)).intValue();

    }






    public int getMdefX() {
        /* 3782 */
        return ((Integer) this.info.get(MapleStatInfo.mddX)).intValue();

    }






    public int getIndieMHp() {
        /* 3789 */
        return ((Integer) this.info.get(MapleStatInfo.indieMhp)).intValue();

    }






    public int getIndieMMp() {
        /* 3796 */
        return ((Integer) this.info.get(MapleStatInfo.indieMmp)).intValue();

    }






    public int getIndieMhpR() {
        /* 3803 */
        return ((Integer) this.info.get(MapleStatInfo.indieMhpR)).intValue();

    }






    public int getIndieMmpR() {
        /* 3810 */
        return ((Integer) this.info.get(MapleStatInfo.indieMmpR)).intValue();

    }






    public int getIndieAllStat() {
        /* 3817 */
        return ((Integer) this.info.get(MapleStatInfo.indieAllStat)).intValue();

    }






    public int getIndieCr() {
        /* 3824 */
        return ((Integer) this.info.get(MapleStatInfo.indieCr)).intValue();

    }









    public int getEpdd() {
        /* 3834 */
        return ((Integer) this.info.get(MapleStatInfo.epad)).intValue();

    }



    public short getIndiePdd() {
        /* 3838 */
        return this.indiePdd;

    }



    public short getIndieMdd() {
        /* 3842 */
        return this.indieMdd;

    }






    public int getIndieDamR() {
        /* 3849 */
        return ((Integer) this.info.get(MapleStatInfo.indieDamR)).intValue();

    }






    public int getIndieBooster() {
        /* 3856 */
        return ((Integer) this.info.get(MapleStatInfo.indieBooster)).intValue();

    }



    public byte getType() {
        /* 3860 */
        return this.type;

    }






    public int getBossDamage() {
        /* 3867 */
        return ((Integer) this.info.get(MapleStatInfo.bdR)).intValue();

    }






    public int getMobCountDamage() {
        /* 3874 */
        return ((Integer) this.info.get(MapleStatInfo.mobCountDamR)).intValue();

    }



    public int getInterval() {
        /* 3878 */
        return this.interval;

    }



    public List<Pair<Integer, Integer>> getAvailableMaps() {
        /* 3882 */
        return this.availableMap;

    }






    public int getWDEFRate() {
        /* 3889 */
        return ((Integer) this.info.get(MapleStatInfo.pddR)).intValue();

    }






    public int getMDEFRate() {
        /* 3896 */
        return ((Integer) this.info.get(MapleStatInfo.mddR)).intValue();

    }






    public int getKillSpree() {
        /* 3903 */
        return ((Integer) this.info.get(MapleStatInfo.kp)).intValue();

    }






    public int getMaxDamageOver() {
        /* 3910 */
        return ((Integer) this.info.get(MapleStatInfo.MDamageOver)).intValue();

    }






    public int getIndieMaxDamageOver() {
        /* 3917 */
        return ((Integer) this.info.get(MapleStatInfo.indieMaxDamageOver)).intValue();

    }






    public int getCostMpRate() {
        /* 3924 */
        return ((Integer) this.info.get(MapleStatInfo.costmpR)).intValue();

    }






    public int getMPConReduce() {
        /* 3931 */
        return ((Integer) this.info.get(MapleStatInfo.mpConReduce)).intValue();

    }






    public int getIndieMaxDF() {
        /* 3938 */
        return ((Integer) this.info.get(MapleStatInfo.MDF)).intValue();

    }






    public int getTargetPlus() {
        /* 3945 */
        return ((Integer) this.info.get(MapleStatInfo.targetPlus)).intValue();

    }







    public int getTargetPlus5th() {
        /* 3953 */
        return ((Integer) this.info.get(MapleStatInfo.targetPlus_5th)).intValue();

    }






    public int getForceCon() {
        /* 3960 */
        return ((Integer) this.info.get(MapleStatInfo.forceCon)).intValue();

    }






    public int getSoulMpCon() {
        /* 3967 */
        return ((Integer) this.info.get(MapleStatInfo.soulmpCon)).intValue();

    }






    public int gethpRCon() {
        /* 3974 */
        return ((Integer) this.info.get(MapleStatInfo.hpRCon)).intValue();

    }






    public int getPPCon() {
        /* 3981 */
        return ((Integer) this.info.get(MapleStatInfo.ppCon)).intValue();

    }



    public boolean isOnRule() {
        /* 3985 */
        return this.ruleOn;

    }



    public int getOnHitHpRecoveryR() {
        /* 3989 */
        return ((Integer) this.info.get(MapleStatInfo.onHitHpRecoveryR)).intValue();

    }



    public int getOnHitMpRecoveryR() {
        /* 3993 */
        return ((Integer) this.info.get(MapleStatInfo.onHitMpRecoveryR)).intValue();

    }



    public boolean is疾风() {
        /* 3997 */
        return ((this.skill && this.sourceid == 15120003) || this.sourceid == 15111022);

    }



    public int a(MapleCharacter player, MonsterStatus stat) {
        /* 4001 */
        int n2 = 0;



        /* 4005 */
        n2 = ((Integer) player.getMap().getMapObjectsInRect(calculateBoundingBox(player.getTruePosition(), player.isFacingLeft()), Collections.singletonList(MapleMapObjectType.MONSTER)).stream().filter(y2 -> ((MapleMonster) y2).isMyPoisons(stat, player.getId())).map(y2 -> Integer.valueOf(1)).reduce(Integer.valueOf(n2), Integer::sum)).intValue();
        /* 4006 */
        return n2;
    }

    public void applyBuffEffect(MapleCharacter applyfrom, MapleCharacter applyto, boolean primary, int newDuration, boolean passive, int subValue) {
        int dice, dice1, i, value, 最大持有几个;
        ArrayList<Integer> list;
        int min, x;

        double hp;

        int count, dice2, j, 使用减少, array3[], z, buffid, k;

        Iterator<Integer> iterator;
        /* 4010 */
        int localDuration = newDuration;
        /* 4011 */
        if (primary) {
            /* 4012 */
            localDuration = Math.max(newDuration, alchemistModifyVal(applyfrom, localDuration, false));

        }
        /* 4014 */
        if (!primary && isRepeatEffect()) {
            /* 4015 */
            localDuration = 180000;

        }






        /* 4023 */
        Map<MapleBuffStat, Integer> localstatups = this.statups, maskedStatups = null;
        /* 4024 */
        boolean normal = true;
        /* 4025 */
        boolean showEffect = primary;
        /* 4026 */
        int maskedDuration = 0;
        /* 4027 */
        byte[] buff = null;
        /* 4028 */
        byte[] foreignbuff = null;
        /* 4029 */
        int direction = 1;



        /* 4033 */
        switch (this.sourceid) {

            case 2022536:
                /* 4035 */
                localstatups = Collections.singletonMap(MapleBuffStat.HP_LOSS_GUARD, Integer.valueOf(1));

                break;

            case 5111007:

            case 5211007:

            case 5311005:

            case 35111013:
                /* 4041 */
                dice = Randomizer.nextInt(6) + 1;
                /* 4042 */
                applyto.getMap().broadcastMessage(applyto, EffectPacket.showDiceEffect(applyto.getId(), this.sourceid, dice, -1, this.level), false);
                /* 4043 */
                applyto.getClient().announce(EffectPacket.showOwnDiceEffect(this.sourceid, dice, -1, this.level));
                /* 4044 */
                if (dice <= 1) {
                    /* 4045 */
                    applyto.dropMessage(-10, "幸运骰子技能失败。");

                    return;

                }
                /* 4048 */
                localstatups = Collections.singletonMap(MapleBuffStat.幸运骰子, Integer.valueOf(dice));
                /* 4049 */
                applyto.dropMessage(-10, "幸运骰子技能发动了[" + dice + "]号效果。");
                /* 4050 */
                applyto.getClient().announce(BuffPacket.giveDice(dice, this.sourceid, localDuration, localstatups));
                /* 4051 */
                normal = false;
                /* 4052 */
                showEffect = false;

                break;


            case 5120012:

            case 5220014:

            case 5320007:

            case 35120014:
                /* 4059 */
                dice1 = Randomizer.nextInt(6) + 1;
                /* 4060 */
                dice2 = makeChanceResult() ? (Randomizer.nextInt(6) + 1) : 0;
                /* 4061 */
                applyto.getMap().broadcastMessage(applyto, EffectPacket.showDiceEffect(applyto.getId(), this.sourceid, dice1, (dice2 > 0) ? -1 : 0, this.level), false);
                /* 4062 */
                applyto.getClient().announce(EffectPacket.showOwnDiceEffect(this.sourceid, dice1, (dice2 > 0) ? -1 : 0, this.level));
                /* 4063 */
                if (dice1 <= 1 && dice2 <= 1) {
                    /* 4064 */
                    applyto.dropMessage(-10, "双幸运骰子技能失败。");

                    return;

                }
                /* 4067 */
                buffid = (dice1 == dice2) ? (dice1 * 100) : ((dice1 <= 1) ? dice2 : ((dice2 <= 1) ? dice1 : (dice1 * 10 + dice2)));
                /* 4068 */
                if (buffid >= 100) {
                    /* 4069 */
                    applyto.dropMessage(-10, "双幸运骰子技能发动了[" + (buffid / 100) + "]号效果。");
                    /* 4070 */
                } else if (buffid >= 10) {
                    /* 4071 */
                    applyto.dropMessage(-10, "双幸运骰子技能发动了[" + (buffid / 10) + "]号效果。");
                    /* 4072 */
                    applyto.dropMessage(-10, "双幸运骰子技能发动了[" + (buffid % 10) + "]号效果。");

                } else {
                    /* 4074 */
                    applyto.dropMessage(-10, "双幸运骰子技能发动了[" + buffid + "]号效果。");

                }
                /* 4076 */
                localstatups = Collections.singletonMap(MapleBuffStat.幸运骰子, Integer.valueOf(buffid));
                /* 4077 */
                applyto.getClient().announce(BuffPacket.giveDice(buffid, this.sourceid, localDuration, localstatups));
                /* 4078 */
                normal = false;
                /* 4079 */
                showEffect = false;

                break;


            case 400011003:
                /* 4083 */
                if (applyfrom.getParty() != null) {
                    /* 4084 */
                    if (applyto != applyfrom) {
                        /* 4085 */
                        localstatups.put(MapleBuffStat.神圣归一, Integer.valueOf(applyfrom.getId()));

                        break;

                    }
                    /* 4088 */
                    int var49_80 = 0;
                    /* 4089 */
                    for (MaplePartyCharacter member : applyfrom.getParty().getMembers()) {
                        /* 4090 */
                        MapleCharacter player = applyfrom.getMap().getCharacterById(member.getId());
                        /* 4091 */
                        if (member.isOnline() && member.getMapid() == applyfrom.getMapId() && member.getId() != applyfrom.getId() && calculateBoundingBox(applyfrom.getPosition(), applyfrom.isFacingLeft()).intersects(player.getBounds())) {
                            /* 4092 */
                            applyBuffEffect(applyfrom, player, primary, newDuration);
                            /* 4093 */
                            localstatups.put(MapleBuffStat.神圣归一, Integer.valueOf(member.getId()));
                            /* 4094 */
                            var49_80 = 1;

                            break;

                        }

                    }
                    /* 4098 */
                    if (var49_80 != 0)
                         break;
                    /* 4100 */
                }
                localstatups.put(MapleBuffStat.SECONDARY_STAT_IndiePMdR, Integer.valueOf(getZ()));

                break;


            case 400031007:
                /* 4104 */
                SkillFactory.getSkill(400031008).getEffect(this.level).applyTo(applyto);
                /* 4105 */
                SkillFactory.getSkill(400031009).getEffect(this.level).applyTo(applyto);

                break;


            case 400031008:

            case 400031009:

            case 400031011:
                /* 4111 */
                this.statups.remove(MapleBuffStat.IndieSummoned);

                break;


            case 400011001:
                /* 4115 */
                if (applyto.getStatForBuff(MapleBuffStat.变换攻击) == null || applyto.getBuffStatValueHolder(MapleBuffStat.变换攻击) == null)
                     break;
                /* 4117 */
                applyto.updateSummonBySkillID(400011001, 400011002, false);

                return;



            case 400021005:
                /* 4122 */
                applyto.updateBuffEffect(applyto.getStatForBuff(MapleBuffStat.光暗转换), Collections.singletonMap(MapleBuffStat.光暗转换, Integer.valueOf((applyto.getBuffStatValueHolder(MapleBuffStat.光暗转换)).value)));

                break;


            case 400041002:

            case 400041003:

            case 400041004:

            case 400041005:
                /* 4129 */
                if (applyto.getStatForBuff(MapleBuffStat.暗影抨击) != null) {
                    /* 4130 */
                    int n56 = applyto.getBuffedIntValue(MapleBuffStat.暗影抨击) - 1;
                    /* 4131 */
                    n56 = Math.max(n56, 0);
                    /* 4132 */
                    this.statups.put(MapleBuffStat.暗影抨击, Integer.valueOf(n56));
                    /* 4133 */
                    if (n56 == 0) {
                        /* 4134 */
                        applyto.cancelEffectFromBuffStat(MapleBuffStat.暗影抨击);

                    }

                    return;

                }

                break;


            case 400041007:
                /* 4141 */
                localDuration = 2100000000;

                break;


            case 400041009:
                /* 4145 */
                showEffect = false;

                break;


            case 400041011:

            case 400041012:

            case 400041013:

            case 400041014:

            case 400041015:
                /* 4153 */
                direction = 1;
                /* 4154 */
                applyto.send(EffectPacket.showOwnBuffEffect(400041009, 1, applyto.getLevel(), this.level, (byte) 0));
                /* 4155 */
                showEffect = true;

                break;


            case 37000010:
                /* 4159 */
                applyto.hadnleBlasterClip(8);

                break;


            case 37000011:

            case 37000012:

            case 37000013:
                /* 4165 */
                applyto.hadnleCylinder(-8);

                break;


            case 37000009:

            case 37100008:

            case 37120014:
                /* 4171 */
                applyto.hadnleCylinder(1);
                /* 4172 */
                applyto.hadnleBlasterClip(-1);


            case 37001004:
                /* 4175 */
                applyto.hadnleBlasterClip(-1);

                break;


            case 37000006:
                /* 4179 */
                localstatups.put(MapleBuffStat.忍耐之盾, Integer.valueOf(Math.max(applyto.getHurtHP() * getX(), 100) / 100));

                break;











            case 1200014:

            case 1220010:
                /* 4193 */
                if (!passive) {

                    return;

                }
                /* 4196 */
                i = Math.min(applyto.getBuffedIntValue(MapleBuffStat.元素冲击) / getX(), getZ());

                /* 4198 */
                if (i < getZ()) {
                    /* 4199 */
                    i++;

                }

                /* 4202 */
                if (applyfrom.getTotalSkillLevel(400011052) > 0) {
                    /* 4203 */
                    localstatups.put(MapleBuffStat.祝福之锤, Integer.valueOf(i));

                }
                /* 4205 */
                localstatups.put(MapleBuffStat.元素冲击, Integer.valueOf(i * getX()));
                /* 4206 */
                j = (applyto.getLastSkill() == 1221004) ? 5 : ((applyto.getLastSkill() == 1201011) ? 2 : ((applyto.getLastSkill() == 1211008) ? 3 : 1));
                /* 4207 */
                localstatups.put(MapleBuffStat.万佛归一破_点数, Integer.valueOf(j));

                break;



            case 400011072:
                /* 4212 */
                value = passive ? 2 : 1;
                /* 4213 */
                if (!passive) {
                    /* 4214 */
                    localstatups.put(MapleBuffStat.崇高十字_2, Integer.valueOf(value));
                    /* 4215 */
                    localstatups.put(MapleBuffStat.崇高十字_3, Integer.valueOf(1));
                    /* 4216 */
                    localstatups.put(MapleBuffStat.钢铁之躯_UNK, Integer.valueOf(1));
                    /* 4217 */
                    localstatups.put(MapleBuffStat.崇高十字_1, Integer.valueOf(-30));
                    break;

                }
                /* 4219 */
                localstatups.put(MapleBuffStat.崇高十字_2, Integer.valueOf(value));

                break;





            case 400031003:
                /* 4226 */
                最大持有几个 = 2;
                /* 4227 */
                使用减少 = -applyto.getBuffedIntValue(MapleBuffStat.呼啸暴风);
                /* 4228 */
                k = Math.min(applyto.getBuffedIntValue(MapleBuffStat.呼啸暴风) + (passive ? 1 : 使用减少), 最大持有几个);
                /* 4229 */
                if (k < 0) {

                    return;

                }
                /* 4232 */
                if (passive && applyto.getBuffStatValueHolder(MapleBuffStat.呼啸暴风) != null && System.currentTimeMillis() < (applyto.getBuffStatValueHolder(MapleBuffStat.呼啸暴风)).startTime + 1000L) {

                    return;

                }
                /* 4235 */
                localstatups.put(MapleBuffStat.呼啸暴风, Integer.valueOf(k));

                break;


            case 400031005:
                /* 4239 */
                list = new ArrayList<>();
                /* 4240 */
                array3 = new int[]{33001008, 33001009, 33001010, 33001011, 33001012, 33001013, 33001014, 33001015};

                while (true) {
                    /* 4242 */
                    int skillid = array3[Randomizer.nextInt(array3.length)];
                    /* 4243 */
                    int mountid = applyfrom.getIntNoRecord(111112) / 10 + 33001006;
                    /* 4244 */
                    if (!list.contains(Integer.valueOf(skillid)) && mountid != skillid) {
                        /* 4245 */
                        list.add(Integer.valueOf(skillid));
                        /* 4246 */
                        if (list.size() >= getY()) {

                            break;

                        }

                    }

                }
                /* 4251 */
                for (iterator = list.iterator(); iterator.hasNext(); ) {
                    int intValue2 = ((Integer) iterator.next()).intValue();


                    while (true) {
                        /* 4254 */
                        Point randomPos = applyto.getMap().getRandomPos();

                        /* 4256 */
                        if (calculateBoundingBox(applyto.getTruePosition(), applyto.isFacingLeft()).contains(randomPos))
                            /* 4257 */
                            SkillFactory.getSkill(intValue2).getEffect(1).applyTo(applyfrom, applyto, false, randomPos, localDuration, false);

                    }
                }


                break;

            case 400011010:
                /* 4262 */
                if (applyto.getStatForBuff(MapleBuffStat.恶魔狂怒) != null) {
                    /* 4263 */
                    applyto.cancelEffectFromBuffStat(MapleBuffStat.恶魔狂怒);

                    return;

                }

                break;


            case 3311002:

            case 3321006:

            case 400051008:
                /* 4271 */
                min = Math.min(applyto.getBuffedIntValue(MapleBuffStat.宇宙无敌火炮弹) + (passive ? 1 : -1), getY());
                /* 4272 */
                if (min < 0) {

                    return;

                }
                /* 4275 */
                if (passive && applyto.getBuffStatValueHolder(MapleBuffStat.宇宙无敌火炮弹) != null && System.currentTimeMillis() < (applyto.getBuffStatValueHolder(MapleBuffStat.宇宙无敌火炮弹)).startTime + (1000 * getQ())) {

                    return;

                }
                /* 4278 */
                localstatups.put(MapleBuffStat.宇宙无敌火炮弹, Integer.valueOf(min));

                break;


            case 400021047:
                /* 4282 */
                min = Math.min(applyto.getBuffedIntValue(MapleBuffStat.宇宙无敌火炮弹) + (passive ? 1 : -1), getY());
                /* 4283 */
                if (min < 0) {

                    return;

                }
                /* 4286 */
                if (passive && applyto.getBuffStatValueHolder(MapleBuffStat.宇宙无敌火炮弹) != null && System.currentTimeMillis() < (applyto.getBuffStatValueHolder(MapleBuffStat.宇宙无敌火炮弹)).startTime + 500L) {

                    return;

                }
                /* 4289 */
                localstatups.put(MapleBuffStat.宇宙无敌火炮弹, Integer.valueOf(min));

                break;



            case 36111003:
                /* 4294 */
                if (!passive) {
                    /* 4295 */
                    applyfrom.setBuffValue(0);

                }
                /* 4297 */
                localDuration = 2100000000;
                /* 4298 */
                x = getX() - applyfrom.getBuffValue();
                /* 4299 */
                z = (11 - x) * getZ();
                /* 4300 */
                localstatups.clear();
                /* 4301 */
                localstatups.put(MapleBuffStat.黑暗高潮, Integer.valueOf(getProp() - applyfrom.getBuffValue() * getY()));
                /* 4302 */
                localstatups.put(MapleBuffStat.伤害吸收, Integer.valueOf(z));
                /* 4303 */
                if (x <= 0) {
                    /* 4304 */
                    applyfrom.setBuffValue(0);
                    /* 4305 */
                    applyfrom.cancelEffect(this, false, -1L);

                    return;

                }
                /* 4308 */
                applyfrom.setBuffValue(applyfrom.getBuffValue() + 1);

                break;


            case 400001010:
                /* 4312 */
                hp = applyfrom.getStat().getCurrentMaxHp() * gethpRCon() / 100.0D;
                /* 4313 */
                localstatups = Collections.singletonMap(MapleBuffStat.攻势之盾, Integer.valueOf((int) hp));

                break;


            case 400011066:
                /* 4317 */
                applyfrom.getSpecialStat().gaintManOfSteel(1);

                break;


            case 64001010:
                /* 4321 */
                showEffect = true;

                break;


            case 24111002:
                /* 4325 */
                if (passive) {
                    /* 4326 */
                    localDuration = getY() * 1000;
                    /* 4327 */
                    localstatups = Collections.singletonMap(MapleBuffStat.无敌状态, Integer.valueOf(1));

                }

                break;



            case 400011102:
                /* 4333 */
                localDuration = (applyfrom.getCyzjBuffTime() <= 0) ? 1000 : applyfrom.getCyzjBuffTime();

                break;


            case 400051044:
                /* 4337 */
                if (!passive) {

                    return;

                }
                /* 4340 */
                count = Math.min(applyto.getBuffedIntValue(MapleBuffStat.雷神长枪), getX());

                /* 4342 */
                if (count >= getX()) {

                    /* 4344 */
                    applyto.cancelEffectFromBuffStat(MapleBuffStat.雷神长枪);

                    /* 4346 */
                    ArrayList<Integer> arrayList = new ArrayList<>();
                    /* 4347 */
                    arrayList.add(Integer.valueOf(400051044));
                    /* 4348 */
                    for (int m = 0; m < 4; m++) {
                        /* 4349 */
                        arrayList.add(Integer.valueOf(400051045));

                    }
                    /* 4351 */
                    applyto.send(MaplePacketCreator.RegisterExtraSkill(applyto, 400051044, arrayList));

                    return;

                }
                /* 4354 */
                count++;
                /* 4355 */
                localstatups.put(MapleBuffStat.雷神长枪, Integer.valueOf(count));

                break;


            case 400051042:
                /* 4359 */
                count = Math.min(applyto.getBuffedIntValue(MapleBuffStat.宇宙无敌火炮弹) + (passive ? 0 : -1), getY());
                /* 4360 */
                if (passive) {

                    /* 4362 */
                    if (applyto.getBuffStatValueHolder(MapleBuffStat.宇宙无敌火炮弹) != null && System.currentTimeMillis() < (applyto.getBuffStatValueHolder(MapleBuffStat.宇宙无敌火炮弹)).startTime + (1000 * getW())) {

                        return;

                    }

                    /* 4366 */
                    if (count >= getY()) {

                        return;

                    }
                    /* 4369 */
                    count++;

                }
                /* 4371 */
                localstatups.put(MapleBuffStat.宇宙无敌火炮弹, Integer.valueOf(count));

                break;


            case 400011055:
                /* 4375 */
                applyfrom.addCooldown(11121055, System.currentTimeMillis(), 9999L);

                break;


            case 400031017:
                /* 4379 */
                localstatups.put(MapleBuffStat.骑兽技能, Integer.valueOf(MapleStatEffectFactory.parseMountInfo(applyfrom, this.sourceid)));

                break;



            case 400051027:
                /* 4384 */
                if (subValue > 0) {
                    /* 4385 */
                    localstatups.put(MapleBuffStat.增加状态异常抗性, Integer.valueOf(((Integer) getInfo().get(MapleStatInfo.indieAsrR)).intValue() * subValue));
                    /* 4386 */
                    localstatups.put(MapleBuffStat.暴击概率, Integer.valueOf(((Integer) getInfo().get(MapleStatInfo.indieCr)).intValue() * subValue));
                    /* 4387 */
                    localstatups.put(MapleBuffStat.终极契约, Integer.valueOf(((Integer) getInfo().get(MapleStatInfo.indieStance)).intValue() * subValue));
                    /* 4388 */
                    localstatups.put(MapleBuffStat.SECONDARY_STAT_IndiePMdR, Integer.valueOf(((Integer) getInfo().get(MapleStatInfo.indiePMdR)).intValue() * subValue));
                    /* 4389 */
                    this.statups.put(MapleBuffStat.精灵元素, Integer.valueOf(((Integer) getInfo().get(MapleStatInfo.x)).intValue() * subValue));

                }

                break;


            case 152001003:
                /* 4394 */
                localstatups.remove(MapleBuffStat.移动速度);

                break;



            case 152121043:
                /* 4399 */
                localDuration += applyfrom.getBuffedIntValue(MapleBuffStat.祝福标记) * 1000;

                break;



            case 152100011:
                /* 4404 */
                showEffect = false;
                /* 4405 */
                applyfrom.getClient().announce(EffectPacket.showBlessOfDarkness(this.sourceid));
                /* 4406 */
                applyfrom.getMap().broadcastMessage(applyfrom, EffectPacket.showBlessOfDarkness(this.sourceid), false);

                break;


            case 152121005:
                /* 4410 */
                applyfrom.dispelSkill(152001003);
                /* 4411 */
                applyfrom.dispelSkill(152101008);

                break;


            case 400051024:
                /* 4415 */
                applyto.getClient().announce(BuffPacket.showFirewall(400051025, MapleStatEffectFactory.calculateBoundingBox(this, applyfrom.getPosition(), applyfrom.isFacingLeft())));

                break;


            default:
                /* 4419 */
                if (is卡牌审判()) {
                    /* 4420 */
                    int m = Randomizer.nextInt((this.sourceid == 20031209) ? 2 : 3) + 1;
                    /* 4421 */
                    int theStat = ((Integer) this.info.get(MapleStatInfo.v)).intValue();
                    /* 4422 */
                    switch (m) {

                        case 1:
                            /* 4424 */
                            theStat = ((Integer) this.info.get(MapleStatInfo.v)).intValue();

                            break;

                        case 2:
                            /* 4427 */
                            theStat = ((Integer) this.info.get(MapleStatInfo.w)).intValue();

                            break;

                        case 3:
                            /* 4430 */
                            theStat = ((Integer) this.info.get(MapleStatInfo.x)).intValue() * 100 + ((Integer) this.info.get(MapleStatInfo.y)).intValue();

                            break;

                    }
                    /* 4433 */
                    localstatups = Collections.singletonMap(MapleBuffStat.卡牌审判, Integer.valueOf(m));
                    /* 4434 */
                    applyto.getMap().broadcastMessage(applyto, EffectPacket.showDiceEffect(applyto.getId(), this.sourceid, m, -1, this.level), false);
                    /* 4435 */
                    applyto.getClient().announce(EffectPacket.showOwnDiceEffect(this.sourceid, m, -1, this.level));
                    /* 4436 */
                    applyto.getClient().announce(BuffPacket.give卡牌审判(this.sourceid, localDuration, localstatups, theStat));
                    /* 4437 */
                    normal = false;
                    /* 4438 */
                    showEffect = false;

                    break;

                }
                /* 4441 */
                if (is喵喵卡片()) {
                    /* 4442 */
                    int m = Randomizer.rand(1, (this.sourceid == 112120019) ? 4 : 3);
                    /* 4443 */
                    int n = (this.sourceid == 112120019) ? 112121020 : 112121007;
                    /* 4444 */
                    switch (m) {

                        case 1:
                            /* 4446 */
                            n = 112121007;
                            /* 4447 */
                            applyto.dropMessage(-10, "喵喵卡片抽取到 红色卡片 效果。");

                            break;

                        case 2:
                            /* 4450 */
                            n = 112121008;
                            /* 4451 */
                            applyto.dropMessage(-10, "喵喵卡片抽取到 蓝色卡片 效果。");

                            break;

                        case 3:
                            /* 4454 */
                            n = 112121009;
                            /* 4455 */
                            applyto.dropMessage(-10, "喵喵卡片抽取到 绿色卡片 效果。");

                            break;

                        case 4:
                            /* 4458 */
                            n = 112121020;
                            /* 4459 */
                            applyto.dropMessage(-10, "喵喵卡片抽取到 金色卡片 效果。");

                            break;

                    }
                    /* 4462 */
                    int skillLevel = (n == 112121020) ? applyto.getTotalSkillLevel(112120019) : applyto.getTotalSkillLevel(112121006);
                    /* 4463 */
                    if (skillLevel > 0) {
                        /* 4464 */
                        SkillFactory.getSkill(n).getEffect(skillLevel).applyTo(applyto);

                    }
                    /* 4466 */
                    int i1 = getCooldown(applyto);
                    /* 4467 */
                    if (i1 > 0 && !applyto.skillisCooling(this.sourceid)) {
                        /* 4468 */
                        applyto.getClient().announce(MaplePacketCreator.skillCooldown(this.sourceid, i1));
                        /* 4469 */
                        applyto.addCooldown(this.sourceid, System.currentTimeMillis(), (i1 * 1000));

                    }
                    return;

                }
                /* 4472 */
                if (is愤怒之火()) {
                    /* 4473 */
                    if (!primary)
                        /* 4474 */
                        localstatups = Collections.singletonMap(MapleBuffStat.增加物理攻击力, this.info.get(MapleStatInfo.indiePad));
                    break;

                }
                /* 4476 */
                if (is舞力全开()) {
                    /* 4477 */
                    if (!primary)
                        /* 4478 */
                        localstatups = Collections.singletonMap(MapleBuffStat.提升伤害百分比, this.info.get(MapleStatInfo.indieDamR));
                    break;

                }
                /* 4480 */
                if (is弓手火眼晶晶()) {
                    /* 4481 */
                    if (applyfrom.getTotalSkillLevel(3120045) > 0)
                        /* 4482 */
                        localstatups = Collections.singletonMap(MapleBuffStat.火眼晶晶, Integer.valueOf((((Integer) this.info.get(MapleStatInfo.x)).intValue() + 5 << 8) + ((Integer) this.info.get(MapleStatInfo.y)).intValue()));
                    break;

                }
                /* 4484 */
                if (is极限射箭()) {
                    /* 4485 */
                    if (applyto.getBuffedValue(MapleBuffStat.极限射箭) != null) {
                        /* 4486 */
                        applyto.cancelEffectFromBuffStat(MapleBuffStat.极限射箭);


                        return;

                    }

                    break;

                }
                /* 4492 */
                if (is导航辅助()) {
                    /* 4493 */
                    if (applyto.getFirstLinkMid() > 0) {
                        /* 4494 */
                        applyto.cancelEffectFromBuffStat(MapleBuffStat.导航辅助);
                        /* 4495 */
                        buff = BuffPacket.give导航辅助(this.sourceid, applyto.getFirstLinkMid(), 1);
                        break;

                    }

                    return;

                }
                /* 4499 */
                if (is神秘瞄准术()) {
                    /* 4500 */
                    Integer buffedIntValue = applyfrom.getBuffedValue(MapleBuffStat.神秘瞄准术);
                    /* 4501 */
                    if (buffedIntValue == null)
                        /* 4502 */ break;
                    if (applyfrom.getSpecialStat().getStackCount() < 5) {
                        /* 4503 */
                        applyfrom.getSpecialStat().gainStackCount(1);

                    }
                    /* 4505 */
                    buffedIntValue = Integer.valueOf(applyfrom.getSpecialStat().getStackCount());
                    /* 4506 */
                    localstatups.put(MapleBuffStat.神秘瞄准术, buffedIntValue);






                    break;

                }




                /* 4518 */
                if (is潜入()) {
                    /* 4519 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.潜入状态, Integer.valueOf(0));
                    /* 4520 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4521 */
                }
                if (is隐身术()) {
                    /* 4522 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.隐身术, Integer.valueOf(0));
                    /* 4523 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4524 */
                }
                if (is神圣魔法盾()) {
                    /* 4525 */
                    if (applyfrom.getTotalSkillLevel(2320043) > 0) {
                        /* 4526 */
                        localstatups = Collections.singletonMap(MapleBuffStat.神圣魔法盾, Integer.valueOf(((Integer) this.info.get(MapleStatInfo.x)).intValue() + 2));

                    }
                    /* 4528 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.神圣魔法盾, Integer.valueOf(0));
                    /* 4529 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4530 */
                }
                if (this.sourceid == 23111005) {
                    /* 4531 */
                    int add_X = (applyfrom.getTotalSkillLevel(23120046) > 0) ? 10 : 0;
                    /* 4532 */
                    int add_terR = (applyfrom.getTotalSkillLevel(23120047) > 0) ? 10 : 0;
                    /* 4533 */
                    int add_asrR = (applyfrom.getTotalSkillLevel(23120048) > 0) ? 10 : 0;
                    /* 4534 */
                    if (add_terR > 0 || add_asrR > 0 || add_X > 0) {
                        /* 4535 */
                        localstatups = new EnumMap<>(MapleBuffStat.class);
                        /* 4536 */
                        localstatups.put(MapleBuffStat.异常抗性, Integer.valueOf(((Integer) this.info.get(MapleStatInfo.terR)).intValue() + add_terR));
                        /* 4537 */
                        localstatups.put(MapleBuffStat.属性抗性, Integer.valueOf(((Integer) this.info.get(MapleStatInfo.asrR)).intValue() + add_asrR));
                        /* 4538 */
                        localstatups.put(MapleBuffStat.伤害吸收, Integer.valueOf(((Integer) this.info.get(MapleStatInfo.x)).intValue() + add_X));

                    }
                    /* 4540 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.伤害吸收, this.info.get(MapleStatInfo.x));
                    /* 4541 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4542 */
                }
                if (this.sourceid == 1211008) {
                    /* 4543 */
                    if (applyto.getBuffedValue(MapleBuffStat.属性攻击) != null && applyto.getBuffSource(MapleBuffStat.属性攻击) != this.sourceid) {
                        /* 4544 */
                        localstatups = Collections.singletonMap(MapleBuffStat.雷鸣冲击, Integer.valueOf(1));

                    }
                    /* 4546 */
                    buff = BuffPacket.giveBuff(this.sourceid, localDuration, localstatups, this, applyto);
                    /* 4547 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.属性攻击, Integer.valueOf(1));
                    /* 4548 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4549 */
                }
                if (is元气恢复()) {
                    /* 4550 */
                    int healRate = Math.min(50, applyto.getBuffedIntValue(MapleBuffStat.元气恢复) + 10);
                    /* 4551 */
                    localstatups = Collections.singletonMap(MapleBuffStat.元气恢复, Integer.valueOf(healRate));
                    break;
                    /* 4552 */
                }
                if (this.sourceid == 1210016) {
                    /* 4553 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.祝福护甲, Integer.valueOf(1));
                    /* 4554 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4555 */
                }
                if (is斗气集中()) {
                    /* 4556 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.斗气集中, Integer.valueOf(0));
                    /* 4557 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4558 */
                }
                if (this.sourceid == 3101004 || this.sourceid == 3201004) {
                    /* 4559 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.无形箭弩, Integer.valueOf(0));
                    /* 4560 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4561 */
                }
                if (is进阶祝福()) {
                    /* 4562 */
                    applyto.cancelEffectFromBuffStat(MapleBuffStat.牧师祝福);
                    /* 4563 */
                    int add_indiePad = (applyfrom.getTotalSkillLevel(2320049) > 0) ? 20 : 0;
                    /* 4564 */
                    int add_indieMhp = (applyfrom.getTotalSkillLevel(2320051) > 0) ? 1000 : 0;
                    /* 4565 */
                    int add_bossDamage = (applyfrom.getTotalSkillLevel(2320050) > 0) ? 10 : 0;
                    /* 4566 */
                    localstatups = new EnumMap<>(MapleBuffStat.class);
                    /* 4567 */
                    localstatups.put(MapleBuffStat.进阶祝福, Integer.valueOf(this.level));
                    /* 4568 */
                    if (add_indiePad > 0) {
                        /* 4569 */
                        localstatups.put(MapleBuffStat.增加物理攻击力, Integer.valueOf(add_indiePad));
                        /* 4570 */
                        localstatups.put(MapleBuffStat.增加魔法攻击力, Integer.valueOf(add_indiePad));

                    }
                    /* 4572 */
                    localstatups.put(MapleBuffStat.增加最大HP, Integer.valueOf(((Integer) this.info.get(MapleStatInfo.indieMhp)).intValue() + add_indieMhp));
                    /* 4573 */
                    localstatups.put(MapleBuffStat.增加最大MP, Integer.valueOf(((Integer) this.info.get(MapleStatInfo.indieMmp)).intValue() + add_indieMhp));
                    /* 4574 */
                    if (add_bossDamage > 0)
                        /* 4575 */
                        localstatups.put(MapleBuffStat.SECONDARY_STAT_IndieBDR, Integer.valueOf(add_bossDamage));
                    break;

                }
                /* 4577 */
                if (is影分身()) {
                    /* 4578 */
                    if (is全息投影()) {
                        /* 4579 */
                        localstatups = Collections.singletonMap(MapleBuffStat.影分身, Integer.valueOf(applyto.getStat().getCurrentMaxHp() * ((Integer) this.info.get(MapleStatInfo.x)).intValue()));

                    }
                    /* 4581 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.影分身, this.info.get(MapleStatInfo.x));
                    /* 4582 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4583 */
                }
                if (is侠盗本能()) {
                    /* 4584 */
                    int killSpree = Math.min(applyto.getBuffedIntValue(MapleBuffStat.击杀点数), 5);
                    /* 4585 */
                    if (passive) {
                        /* 4586 */
                        if (killSpree >= 5) {

                            return;

                        }
                        /* 4589 */
                        killSpree++;
                        /* 4590 */
                        if (applyto.isShowPacket()) {
                            /* 4591 */
                            applyto.dropSpouseMessage(10, "当前击杀点数: " + killSpree);

                        }
                        /* 4593 */
                        localstatups = Collections.singletonMap(MapleBuffStat.击杀点数, Integer.valueOf(killSpree));
                        /* 4594 */
                        foreignbuff = BuffPacket.giveForeignBuff(applyto, localstatups, this);
                        break;

                    }
                    /* 4596 */
                    applyto.cancelEffectFromBuffStat(MapleBuffStat.击杀点数);
                    /* 4597 */
                    localstatups = Collections.singletonMap(MapleBuffStat.增加物理攻击力, Integer.valueOf(((Integer) this.info.get(MapleStatInfo.x)).intValue() + ((Integer) this.info.get(MapleStatInfo.kp)).intValue() * killSpree));
                    break;

                }
                /* 4599 */
                if (is提速时刻()) {
                    /* 4600 */
                    MapleBuffStat status_ = applyto.isZeroSecondLook() ? MapleBuffStat.提速时刻_战斗 : MapleBuffStat.提速时刻_侦查;
                    /* 4601 */
                    int buffvalue = applyto.getBuffedIntValue(status_);
                    /* 4602 */
                    buffvalue++;
                    /* 4603 */
                    buffvalue = Math.min(buffvalue, 10);

                    /* 4605 */
                    localstatups = Collections.singletonMap(status_, Integer.valueOf(buffvalue));
                    break;
                    /* 4606 */
                }
                if (is黑暗幻影()) {
                    /* 4607 */
                    applyto.dispelSkill(14111024);
                    /* 4608 */
                    if (applyto.getTotalSkillLevel(14111024) > 0) {
                        /* 4609 */
                        SkillFactory.getSkill(14111024).getEffect(applyto.getTotalSkillLevel(14111024)).applyTo(applyto);

                    }
                    /* 4611 */
                    SkillFactory.getSkill(14121055).getEffect(1).applyTo(applyto);
                    /* 4612 */
                    SkillFactory.getSkill(14121056).getEffect(1).applyTo(applyto);
                    break;
                    /* 4613 */
                }
                if (this.sourceid == 15001022) {
                    /* 4614 */
                    if (passive) {
                        /* 4615 */
                        localDuration = 30000;
                        /* 4616 */
                        int raidenCount = (applyto.getStat()).raidenCount;
                        /* 4617 */
                        int m = Math.min(applyto.getBuffedIntValue(MapleBuffStat.百分比无视防御) / 5, raidenCount);
                        /* 4618 */
                        if (m < raidenCount && raidenCount > 0) {
                            /* 4619 */
                            m++;

                        }
                        /* 4621 */
                        localstatups = Collections.singletonMap(MapleBuffStat.百分比无视防御, Integer.valueOf(m * 5));
                        break;

                    }
                    /* 4623 */
                    localstatups = Collections.singletonMap(MapleBuffStat.元素属性, Integer.valueOf(1));
                    break;

                }
                /* 4625 */
                if (this.sourceid == 1221009) {
                    /* 4626 */
                    count = Math.min(applyto.getBuffedIntValue(MapleBuffStat.元素冲击) / 5, 5);
                    /* 4627 */
                    if (count < 5) {

                        return;

                    }
                    /* 4630 */
                    applyto.cancelEffectFromBuffStat(MapleBuffStat.元素冲击);
                    break;
                    /* 4631 */
                }
                if (is疾风()) {
                    /* 4632 */
                    count = Math.min(applyto.getBuffedIntValue(MapleBuffStat.百分比无视防御) / 5, (applyto.getStat()).raidenCount);
                    /* 4633 */
                    int skillLevel = applyto.getTotalSkillLevel(15120003);
                    /* 4634 */
                    if (count < ((skillLevel > 0) ? 2 : 3)) {
                        /* 4635 */
                        applyto.dropMessage(5, "雷电增益不足，无法使用技能。");

                        return;

                    }
                    /* 4638 */
                    int m = ((Integer) this.info.get(MapleStatInfo.y)).intValue();
                    /* 4639 */
                    if (skillLevel > 0) {
                        /* 4640 */
                        MapleStatEffect effect = SkillFactory.getSkill(15120003).getEffect(skillLevel);
                        /* 4641 */
                        m = effect.getY();
                        /* 4642 */
                        localDuration = effect.getDuration(applyto);

                    }
                    /* 4644 */
                    applyto.cancelEffectFromBuffStat(MapleBuffStat.百分比无视防御);
                    /* 4645 */
                    localstatups = Collections.singletonMap(MapleBuffStat.提升伤害百分比, Integer.valueOf(m * count));
                    break;
                    /* 4646 */
                }
                if (is属性攻击()) {
                    /* 4647 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.属性攻击, Integer.valueOf(1));
                    /* 4648 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4649 */
                }
                if (is终极无限()) {
                    /* 4650 */
                    maskedDuration = alchemistModifyVal(applyfrom, 4000, false);
                    break;
                    /* 4651 */
                }
                if (is尖兵支援()) {
                    /* 4652 */
                    maskedDuration = 4000;
                    break;
                    /* 4653 */
                }
                if (is黑暗高潮()) {
                    /* 4654 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.黑暗高潮, Integer.valueOf(1));
                    /* 4655 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4656 */
                }
                if (is黑暗祝福()) {
                    /* 4657 */
                    localDuration = 0;
                    /* 4658 */
                    applyto.getClient().announce(EffectPacket.showBlessOfDarkness(this.sourceid));
                    break;
                    /* 4659 */
                }
                if (is圣洁之力()) {
                    /* 4660 */
                    applyto.cancelEffectFromBuffStat(MapleBuffStat.圣洁之力);
                    /* 4661 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.圣洁之力, Integer.valueOf(1));
                    /* 4662 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4663 */
                }
                if (is神圣迅捷()) {
                    /* 4664 */
                    applyto.cancelEffectFromBuffStat(MapleBuffStat.神圣迅捷);
                    /* 4665 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.神圣迅捷, Integer.valueOf(1));
                    /* 4666 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4667 */
                }
                if (is葵花宝典()) {
                    /* 4668 */
                    applyto.handleOrbconsume(1);
                    break;
                    /* 4669 */
                }
                if (is剑刃之壁()) {
                    /* 4670 */
                    if (this.sourceid == 61101002 && applyfrom.getTotalSkillLevel(61120007) > 0) {
                        /* 4671 */
                        SkillFactory.getSkill(61120007).getEffect(applyfrom.getTotalSkillLevel(61120007)).applyBuffEffect(applyfrom, applyto, primary, newDuration);

                        return;

                    }
                    /* 4674 */
                    Item weapon = applyto.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -11);
                    /* 4675 */
                    if (weapon != null) {
                        /* 4676 */
                        Equip skin = (Equip) weapon;
                        /* 4677 */
                        int itemId = (skin.getItemSkin() % 10000 > 0) ? skin.getItemSkin() : weapon.getItemId();
                        /* 4678 */
                        Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.剑刃之壁, Integer.valueOf(this.level));

                        /* 4680 */
                        buff = BuffPacket.giveBuff(this.sourceid, localDuration, stat, this, applyto);


                        /* 4683 */
                        foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);


                        /* 4686 */
                        int m = getCooldown(applyto);
                        /* 4687 */
                        if (m > 0 && !applyto.skillisCooling(61101002)) {
                            /* 4688 */
                            applyto.getClient().announce(MaplePacketCreator.skillCooldown(61101002, m));
                            /* 4689 */
                            applyto.addCooldown(61101002, System.currentTimeMillis(), (m * 1000));

                        }
                        break;

                    }
                    /* 4692 */
                    applyto.dropMessage(5, "佩戴的武器无法使用此技能。");






                    return;

                }




                /* 4704 */
                if (isMorph()) {
                    /* 4705 */
                    if (is冰骑士()) {
                        /* 4706 */
                        Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.SECONDARY_STAT_IceKnight, Integer.valueOf(2));
                        /* 4707 */
                        buff = BuffPacket.giveBuff(0, localDuration, stat, this, applyto);

                    }

                    break;

                }
                /* 4711 */
                if (isInflation()) {
                    /* 4712 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.巨人药水, Integer.valueOf(this.inflation));
                    /* 4713 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4714 */
                }
                if (this.charColor > 0) {
                    /* 4715 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.FAMILIAR_SHADOW, Integer.valueOf(1));
                    /* 4716 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4717 */
                }
                if (is骑兽技能()) {
                    /* 4718 */
                    if (this.sourceid != 22171080) {
                        /* 4719 */
                        localDuration = 0;

                    }
                    /* 4721 */
                    localstatups = new EnumMap<>(this.statups);
                    /* 4722 */
                    int mountid = MapleStatEffectFactory.parseMountInfo(applyto, this.sourceid);
                    /* 4723 */
                    int mountid2 = MapleStatEffectFactory.parseMountInfo_Pure(applyto, this.sourceid);
                    /* 4724 */
                    if (mountid != 0 && mountid2 != 0) {
                        /* 4725 */
                        localstatups.put(MapleBuffStat.骑兽技能, Integer.valueOf(mountid2));
                        /* 4726 */
                        if (is金属机甲()) {
                            /* 4727 */
                            int skilllevel_ = applyfrom.getTotalSkillLevel(35120000);
                            /* 4728 */
                            if (skilllevel_ > 0) {
                                /* 4729 */
                                localstatups.put(MapleBuffStat.增加最大HP百分比, Integer.valueOf(skilllevel_));

                            }

                        }
                        /* 4732 */
                        List<Pair<MapleBuffStat, Integer>> stat = Collections.singletonList(new Pair(MapleBuffStat.骑兽技能, Integer.valueOf(0)));
                        /* 4733 */
                        applyto.cancelEffectFromBuffStat(MapleBuffStat.战神抗压);
                        /* 4734 */
                        applyto.cancelEffectFromBuffStat(MapleBuffStat.伤害反击);
                        /* 4735 */
                        applyto.cancelEffectFromBuffStat(MapleBuffStat.召唤美洲豹);
                        /* 4736 */
                        foreignbuff = BuffPacket.showMonsterRiding(applyto.getId(), stat, mountid, this.sourceid);
                        break;

                    }
                    /* 4738 */
                    if (applyto.isAdmin()) {
                        /* 4739 */
                        applyto.dropSpouseMessage(10, "骑宠BUFF " + this.sourceid + " 错误，未找到这个骑宠的外形ID。");

                    }

                    return;

                }
                /* 4743 */
                if (isSoaring()) {
                    /* 4744 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.飞翔, Integer.valueOf(1));
                    /* 4745 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4746 */
                }
                if (is高空飞行()) {
                    /* 4747 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.飞行骑乘, Integer.valueOf(1));
                    /* 4748 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4749 */
                }
                if (this.berserk > 0) {
                    /* 4750 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.天使状态, Integer.valueOf(0));
                    /* 4751 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4752 */
                }
                if (is狂暴战魂() || this.berserk2 > 0) {
                    /* 4753 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.狂暴战魂, Integer.valueOf(1));
                    /* 4754 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4755 */
                }
                if (is金刚霸体()) {
                    /* 4756 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.金刚霸体, Integer.valueOf(1));
                    /* 4757 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4758 */
                }
                if (is天使物品()) {
                    /* 4759 */
                    if ((applyto.getStat()).equippedSummon <= 0)
                        /* 4760 */ localstatups = Collections.singletonMap(MapleBuffStat.天使状态, Integer.valueOf(1));
                    break;

                }
                /* 4762 */
                if (this.sourceid == 11001022) {
                    /* 4763 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.信天翁, Integer.valueOf(this.level));
                    /* 4764 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4765 */
                }
                if (is月光转换()) {
                    /* 4766 */
                    applyto.cancelEffectFromBuffStat(MapleBuffStat.月光转换);
                    /* 4767 */
                    int skillLevel = applyto.getTotalSkillLevel(11120009);
                    /* 4768 */
                    if (skillLevel > 0)
                         {
                        /* 4770 */
                        if (this.sourceid == 11101022 || this.sourceid == 11121011) {
                            /* 4771 */
                            MapleStatEffect effect = SkillFactory.getSkill(11120009).getEffect(skillLevel);
                            /* 4772 */
                            if (effect != null) {
                                /* 4773 */
                                applyfrom.dispelSkill(11121012);
                                /* 4774 */
                                applyfrom.dispelSkill(11121011);
                                /* 4775 */
                                applyfrom.dispelSkill(11111022);
                                /* 4776 */
                                applyfrom.dispelSkill(11101022);

                                /* 4778 */
                                localstatups = new EnumMap<>(MapleBuffStat.class);
                                /* 4779 */
                                localstatups.put(MapleBuffStat.霰弹炮, Integer.valueOf(this.level));
                                /* 4780 */
                                localstatups.put(MapleBuffStat.月光转换, Integer.valueOf(1));
                                /* 4781 */
                                localstatups.put(MapleBuffStat.暴击概率, Integer.valueOf(effect.getIndieCr()));

                            }
                            /* 4783 */
                        } else if (this.sourceid == 11111022 || this.sourceid == 11121012) {
                            /* 4784 */
                            MapleStatEffect effect = SkillFactory.getSkill(11120010).getEffect(skillLevel);
                            /* 4785 */
                            if (effect != null) {
                                /* 4786 */
                                applyfrom.dispelSkill(11121012);
                                /* 4787 */
                                applyfrom.dispelSkill(11121011);
                                /* 4788 */
                                applyfrom.dispelSkill(11111022);
                                /* 4789 */
                                applyfrom.dispelSkill(11101022);

                                /* 4791 */
                                localstatups = new EnumMap<>(MapleBuffStat.class);
                                /* 4792 */
                                localstatups.put(MapleBuffStat.月光转换, Integer.valueOf(2));
                                /* 4793 */
                                localstatups.put(MapleBuffStat.提高攻击速度, Integer.valueOf(effect.getIndieBooster()));
                                /* 4794 */
                                localstatups.put(MapleBuffStat.提升伤害百分比, Integer.valueOf(effect.getIndieDamR()));

                            }

                        }

                    }

                    /* 4799 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.月光转换, Integer.valueOf((this.sourceid == 11101022) ? 1 : 2));
                    /* 4800 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4801 */
                }
                if (is信天翁新()) {
                    /* 4802 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.信天翁, Integer.valueOf(this.level));
                    /* 4803 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4804 */
                }
                if (isSummonSkill()) {
                    /* 4805 */
                    localstatups = new EnumMap<>(this.statups);
                    /* 4806 */
                    localstatups.remove(MapleBuffStat.IndieSummoned);
                    /* 4807 */
                    normal = (localstatups.size() > 0);
                    break;
                    /* 4808 */
                }
                if (is符文状态()) {
                    /* 4809 */
                    applyto.dispelSkill(80001427);
                    /* 4810 */
                    applyto.dispelSkill(80001428);
                    /* 4811 */
                    applyto.dispelSkill(80001430);
                    /* 4812 */
                    applyto.dispelSkill(80001432);
                    break;
                    /* 4813 */
                }
                if (is模式变更()) {
                    /* 4814 */
                    applyto.cancelEffectFromBuffStat(MapleBuffStat.守护模式变更);
                    /* 4815 */
                    if (this.sourceid != 110001501) {
                        /* 4816 */
                        applyto.dispelBuffByJobId(11200);

                    }
                    /* 4818 */
                    if (this.sourceid != 110001502) {
                        /* 4819 */
                        applyto.dispelBuffByJobId(11210);

                    }
                    /* 4821 */
                    if (this.sourceid != 110001503) {
                        /* 4822 */
                        applyto.dispelBuffByJobId(11211);

                    }
                    /* 4824 */
                    if (this.sourceid != 110001504)
                        /* 4825 */ applyto.dispelBuffByJobId(11212);
                    break;

                }
                /* 4827 */
                if (is伤害置换()) {
                    /* 4828 */
                    if (!passive) {

                        return;

                    }
                    /* 4831 */
                    int xishou = (int) (applyto.getTotDamageToMob() * makeRate(((Integer) this.info.get(MapleStatInfo.y)).intValue()));
                    /* 4832 */
                    if (applyto.isAdmin()) {
                        /* 4833 */
                        applyto.dropSpouseMessage(20, "[伤害置换] 当前打怪总伤害: " + applyto.getTotDamageToMob() + " 吸收转换数值: " + xishou);

                    }
                    /* 4835 */
                    localstatups = Collections.singletonMap(MapleBuffStat.伤害置换, Integer.valueOf(xishou));
                    break;
                    /* 4836 */
                }
                if (is幸运钱()) {
                    /* 4837 */
                    int luck = Math.min(applyto.getBuffedIntValue(MapleBuffStat.能量激发), 5);
                    /* 4838 */
                    if (luck > 0) {
                        /* 4839 */
                        if (luck < 5) {
                            /* 4840 */
                            luck++;

                        }
                        /* 4842 */
                        if (applyto.isShowPacket()) {
                            /* 4843 */
                            applyto.dropSpouseMessage(10, "当前幸运钱次数: " + luck);

                        }
                        /* 4845 */
                        localstatups = new EnumMap<>(MapleBuffStat.class);
                        /* 4846 */
                        localstatups.put(MapleBuffStat.能量激发, Integer.valueOf(luck));
                        /* 4847 */
                        localstatups.put(MapleBuffStat.提升伤害百分比, Integer.valueOf(((Integer) this.info.get(MapleStatInfo.indieDamR)).intValue() * luck));
                        /* 4848 */
                        localstatups.put(MapleBuffStat.暴击概率, Integer.valueOf(((Integer) this.info.get(MapleStatInfo.x)).intValue() * luck));

                    }
                    /* 4850 */
                    applyto.switchLuckyMoney(false);
                    break;
                    /* 4851 */
                }
                if (is拔刀姿势()) {
                    /* 4852 */
                    applyto.dispelSkill(40011291);
                    /* 4853 */
                    SkillFactory.getSkill(40011292).getEffect(1).applyTo(applyto);
                    break;
                    /* 4854 */
                }
                if (is避柳()) {
                    /* 4855 */
                    int counts = Math.min(applyto.getBuffedIntValue(MapleBuffStat.避柳) / ((Integer) this.info.get(MapleStatInfo.damR)).intValue() + 1, 5);
                    /* 4856 */
                    localstatups = Collections.singletonMap(MapleBuffStat.避柳, Integer.valueOf(((Integer) this.info.get(MapleStatInfo.damR)).intValue() * counts));
                    break;

                }
                /* 4858 */
                if (is灵狐()) {
                    /* 4859 */
                    if (applyto.getBuffedValue(MapleBuffStat.灵狐) != null) {
                        /* 4860 */
                        applyto.cancelEffectFromBuffStat(MapleBuffStat.灵狐);
                        return;

                    }
                    break;

                }
                /* 4863 */
                if (is心魂本能()) {
                    /* 4864 */
                    if (applyto.getBuffedValue(MapleBuffStat.心魂本能) != null) {
                        /* 4865 */
                        applyto.cancelEffectFromBuffStat(MapleBuffStat.心魂本能);

                        return;

                    }
                    /* 4868 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.心魂本能, Integer.valueOf(this.level));
                    /* 4869 */
                    foreignbuff = BuffPacket.giveForeignBuff(applyto, stat, this);
                    break;
                    /* 4870 */
                }
                if (is心魂充能()) {
                    /* 4871 */
                    applyto.gainPP((30 - applyto.getSpecialStat().getPP()) / 2);
                    break;
                    /* 4872 */
                }
                if (is灵魂助力统治()) {
                    /* 4873 */
                    this.ruleOn = !this.ruleOn;
                    /* 4874 */
                    localDuration = (applyto.getBuffedValue(MapleBuffStat.灵魂助力) != null) ? (int) ((applyto.getBuffStatValueHolder(MapleBuffStat.灵魂助力)).localDuration + applyto.getBuffedStartTime(MapleBuffStat.灵魂助力).longValue() - System.currentTimeMillis()) : localDuration;
                    /* 4875 */
                    Map<MapleBuffStat, Integer> stat = Collections.singletonMap(MapleBuffStat.灵魂助力, Integer.valueOf(1));
                    /* 4876 */
                    buff = BuffPacket.giveBuff(this.sourceid, localDuration, stat, this, applyto);
                    break;
                    /* 4877 */
                }
                if (is激素引擎()) {
                    /* 4878 */
                    if (applyto.getSkillLevel(21110016) > 0) {
                        /* 4879 */
                        Skill skill1 = SkillFactory.getSkill(21110016);
                        /* 4880 */
                        MapleStatEffect effect1 = skill1.getEffect(applyto.getTotalSkillLevel(21110016));
                        /* 4881 */
                        effect1.applyTo(applyto);
                        /* 4882 */
                        applyto.setAranCombo(500, true);
                        return;

                    }
                    break;

                }
                /* 4885 */
                if (is神速衔接()) {
                    /* 4886 */
                    if (applyto.getBuffedValue(MapleBuffStat.神速衔接) != null)
                        /* 4887 */
                        localstatups = Collections.singletonMap(MapleBuffStat.神速衔接, this.info.get(MapleStatInfo.damR));
                    break;

                }
                /* 4889 */
                if (is贯穿箭()) {
                    /* 4890 */
                    if (!passive) {

                        return;

                    }
                    /* 4893 */
                    int damgnum = Math.min(applyto.getBuffedIntValue(MapleBuffStat.贯穿箭), 9);
                    /* 4894 */
                    if (damgnum >= 9) {
                        /* 4895 */
                        applyto.cancelEffectFromBuffStat(MapleBuffStat.贯穿箭);

                        return;

                    }
                    /* 4898 */
                    damgnum++;
                    /* 4899 */
                    if (applyto.isShowPacket()) {
                        /* 4900 */
                        applyto.dropSpouseMessage(10, "贯穿箭当前叠加次数: " + damgnum);

                    }
                    /* 4902 */
                    localstatups = Collections.singletonMap(MapleBuffStat.贯穿箭, Integer.valueOf(damgnum));
                    break;
                    /* 4903 */
                }
                if (is重生契约状态()) {
                    /* 4904 */
                    int skillLevel = applyto.getTotalSkillLevel(1320016);
                    /* 4905 */
                    localstatups = new EnumMap<>(MapleBuffStat.class);
                    /* 4906 */
                    localstatups.put(MapleBuffStat.无敌状态, this.info.get(MapleStatInfo.x));
                    /* 4907 */
                    localstatups.put(MapleBuffStat.重生契约, Integer.valueOf(skillLevel));
                    /* 4908 */
                    localstatups.put(MapleBuffStat.提升伤害百分比, this.info.get(MapleStatInfo.cr));

                }

                break;

        }



        /* 4915 */
        if (!is骑兽技能() && !is机械传送门()) {
            /* 4916 */
            applyto.cancelEffect(this, true, -1L, localstatups);

        }

        /* 4919 */
        long startTime = System.currentTimeMillis();
        /* 4920 */
        if (localDuration > 0) {
            /* 4921 */
            CancelEffectAction cancelAction = new CancelEffectAction(applyto, this, startTime, localstatups);
            /* 4922 */
            ScheduledFuture<?> schedule = server.Timer.BuffTimer.getInstance().schedule(cancelAction, (maskedDuration > 0) ? maskedDuration : localDuration);
            /* 4923 */
            applyto.registerEffect(this, startTime, schedule, localstatups, false, localDuration, applyfrom.getId());

        } else {
            /* 4925 */
            applyto.registerEffect(this, startTime, null, localstatups, false, localDuration, applyto.getId());

        }


        /* 4929 */
        int cooldown = getCooldown(applyto);
        /* 4930 */
        if (cooldown > 0 && !applyto.skillisCooling(this.sourceid)) {
            /* 4931 */
            if (applyto.isAdmin()) {
                /* 4932 */
                applyto.dropDebugMessage(2, "[技能冷却] 为GM消除技能冷却时间, 原技能冷却时间:" + cooldown + "秒.");
                /* 4933 */
            } else if (!passive) {
                /* 4934 */
                if (ServerConfig.WORLD_SKILL_NOCOOLDOWN) {
                    /* 4935 */
                    applyto.dropDebugMessage(2, "[技能冷却] 为GM消除技能冷却时间, 原技能冷却时间:" + cooldown + "秒.");

                } else {

                    /* 4938 */
                    applyto.getClient().announce(MaplePacketCreator.skillCooldown(this.sourceid, cooldown));
                    /* 4939 */
                    applyto.addCooldown(this.sourceid, startTime, (cooldown * 1000));

                }

            }

        }

        /* 4944 */
        if (buff != null) {
            /* 4945 */
            applyto.getClient().announce(buff);
            /* 4946 */
        } else if (normal && localstatups.size() > 0) {
            /* 4947 */
            applyto.getClient().announce(BuffPacket.giveBuff(this.skill ? this.sourceid : -this.sourceid, localDuration, localstatups, this, applyto));

        }
        /* 4949 */
        if (foreignbuff != null && !applyto.isHidden()) {
            /* 4950 */
            applyto.getMap().broadcastMessage(foreignbuff);

        }

        /* 4953 */
        if (showEffect && !applyto.isHidden()) {
            /* 4954 */
            applyto.getMap().broadcastMessage(applyto, EffectPacket.showBuffeffect(applyto, this.sourceid, 1, applyto.getLevel(), this.level), false);

        }
    }




    public String getName() {
        /* 4959 */
        return this.skill ? SkillFactory.getSkillName(this.sourceid) : MapleItemInformationProvider.getInstance().getName(this.sourceid);

    }



       public static class CancelEffectAction
             implements Runnable
             {
             private final MapleStatEffect effect;

             private final WeakReference<MapleCharacter> target;
             private final long startTime;
             private final Map<MapleBuffStat, Integer> statup;



        public CancelEffectAction(MapleCharacter target, MapleStatEffect effect, long startTime, Map<MapleBuffStat, Integer> statup) {
            /* 4973 */
            this.effect = effect;
            /* 4974 */
            this.target = new WeakReference<>(target);
            /* 4975 */
            this.startTime = startTime;
            /* 4976 */
            this.statup = statup;

        }




        public void run() {
            /* 4981 */
            MapleCharacter realTarget = this.target.get();
            /* 4982 */
            if (realTarget != null)
                /* 4983 */ realTarget.cancelEffect(this.effect, false, this.startTime, this.statup);

        }

    }

}


/* Location:              C:\PGX\Server.jar!\server\MapleStatEffect.class
 * Java compiler version: 8 (52.0)
 * JD-Core Version:       1.1.3
 */